Swift还是Objective-C,你怎么选择

苹果在2014WWDC上发布了新编程语言Swift,并宣称其快速、现代、安全、互动,且全面优于Objective-C,将在未来改变我们编写iOS和Mac应用的方式。但面对这门全新的编程语言,新入行者对学习Swift还是有些疑惑和纠结。

Swift用来撰写OS X和iOS应用程序,可与Object-C共同运行于MAC OS和iOS平台,改变了Obejective-C复杂的语法,更加简单易用、有未来,让许多开发者心动不已,Swift明显的特点有:

1、为苹果开发工具带来了Xcode Playgrounds功能,该功能提供强大的互动效果,能让Swift源代码在撰写过程中实时显示出其运行结果;

2、基于C和Objective-C,而却没有C的一些兼容约束;

3、采用了安全的编程模式;

4、界面基于Cocoa和Cocoa Touch框架;

5、保留了Smalltalk的动态特性。

当然,Swift的更多优点在于细节处理上,比如提供类型推导、泛型、集合可变性、字符串比较等等,熟悉Objective-C的开发者都能明显感受到Swift的优胜之处,小编就不在此班门弄斧了。

但关于学习Swift,不少开发者还是有些迷惑,Amit Bijlani给出了自己的见解,供大家参考。

编程新手也可直接学Swift,无需先学Objective-C

Swift是一个全新的语言,与Objective-C或C都没有主从关系,就是说它们都是编程语言并且遵守一些基础概念和范例,但是开发者并不需要在学习其中一个之前先学另一个。编程新手也可以直接学习苹果发布的官方的Swift文档,而无需先学Objective-C。

正在学习Objective-C是否转为学Swift要视情况而定

1、如果你把学习iOS当做一个爱好或者出于好奇心才学,那么转到Swift学习上吧。

2、如果你把从事iOS开发视为职业,那么你要知道外面至少有100万个应用都是用Objective-C编写的,Swift于2014年才刚刚发布,所以你将来的职业的app开发仍然很有可能使用Objective-C。因此你需要学习Objective-C来获得一个工作,直到Swift成为标准,这大概将花费数年时间。

3、同时学习两门语言也将对你有好处。你未来的上司甚至可能会让你来将现存的Objective-C app切换到Swift上。Amit Bijlani对此观点有所保留,他认为一个应用最重要的部分是它的功能而非它使用的语言,因此重写现有app的做法可能不会流行。

学习Swift的好处

1、playground让Swift变得容易学会,一旦你学过了Swift,如果将iOS开发视为职业的话,也更容易理解、学习Objective-C。

2、Swift是一种现代语言,如果你学习Swift,意味着也同时做好了面向未来的准备,因为Swift将是新一代的应用所用的语言(包括Apple Watch上的应用)。

3、世界上还没有5年经验的Swift开发者,但如果你现在开始学习Swift,那么过了5年你就将成为其中一位。

DevStore小编:关于这门汲取了Objective-C、Rust、Haskell、Ruby、Python、C#以及CLU等编程语言精华的新语言,现在已经有了许多教程、DEMO等资源,开发者可以通过各种渠道进行学习。

关于是否学习Swift各方观点也都是一家之言、仅供借鉴,苹果官方称:Objective-C不会消失,Swift和Objective-C可同时用于Cocoa和CocoaTouch开发。但苹果似乎鼓励开发者使用Swift进行新的开发,可能在未来的框架和API开发中减少使用Objective-C语言,甚至弃用。总之有备无患、保持领先是没错的,so,从现在开始学习吧。

时间: 2024-11-05 00:52:59

Swift还是Objective-C,你怎么选择的相关文章

Swift调用Objective C的FrameWork

很多Github的库经过很多年的发展,源码都是OC写的,,所以,用Swift调用OC的库就是开发中难免遇到的的一个问题,本文以AFNetworking为例,讲解如何跨语言调用. 第一步 创建一个空的工程  注意,语言选择Swift 第二步,创建bridging-header 这个文件的作用,就是把OC的接口暴露给Swift.有两种方式  方式一  创建一个OC文件,然后点击确定    弹出是否要创建Bridging-Header,点击确定,这样会生成三个文件,其中的一个就是我们要用的SwiftU

IOS-Swift、Objective-C、C++混合编程

1.Objective-C调用C++代码 后缀为m文件的是Objective-C的执行文件,而后缀为mm文件的是Objective-C++文件. 直接在Objective-C中是无法调用C++代码的,所以如果需要在Objective-C调用C++语言就需要直接将后缀m文件改为mm,然后就可以调用C++代码了. Objective-C兼容C,Objective-C++兼容C.C++. 接下来是在OC工程中创建C++文件,并调用C++的代码: 然后在OC文件中直接用C++的语法调用C++,所以前提是

Swift(上) 常量, 变量, 数据类型, 循环, 选择结构 简单函数

本篇内容是在XCode的Playground下编写的 那么什么是Playground呢? 提到Playground我们就不得不提Swift这个最近苹果公司力推的语言, Swift是苹果公司在WWDC2014上发布的全新开发语言.从演示视频及随后在appstore上线的标准文档看来,语法内容混合了OC,JS,Python,语法简单,使用方便,并可与OC混合使用. Xcode 6 对 Swift 有着全面深入的支持.你可以利用 100% Swift 代码创建全新的 app,或者将新的 Swift 代

Swift中的错误处理

前言 任何代码都会发生错误,这些错误有些是可以补救的,有些则只能让程序崩溃.良好的错误处理能够让你的代码健壮性提高,提高程序的稳定性. 本文的Swift版本:Swift 3 Objective C 返回nil 如果出错了,就返回空是Objective C中的一种常见的处理方式.因为在Objective C中,向nil发送消息是安全的.比如: - (instancetype)init { self = [super init]; if (self) { } //如果初始化失败,会返回nil ret

#从零开始学Swift2.0# No.1 初识Swift

前言 WWDC2014Apple Inc发布Swift1.0,   从2014年到2015年WWDC2015, Swift经历了1.0, 1.1, 1.2和现在刚发布的2.0版本. 从1.0版本到2.0版本,Swift的语法体系结构改动非常大. 去年的时候学习过一点点Swift的基本语法, 但是由于当时Swift这门语言太动荡, 所以一直页没有去深入学习,  渐渐的基本都已经还给了Apple Inc. 随着2015年12月4日的到来, Apple Inc如约在GitHub上开源了Swift. A

OC与Swift混编

如何在OC类里调用Swift函数? 新建一个工程,language选择swift,新加一个名为"SwiftClass.swift"的swift文件,一个名为"OCClass"的OC的.h和.m文件因为OC文件必须导入头文件,而Swift默认的头文件格式为:"工程名-swift.h",它就是项目中所有的swift类的头文件.  导入这个文件之后,就可以引用Swift里的方法了. 如何在Swift文件里调用OC文件?在桥接文件里导入所有你需要暴露在S

UISegmentedControl在Swift中的使用

UISegmentedControl控件是分段显示控件,用户可以选择它上展示的任一段部分,每一个部分都像是一个按钮,如果被按下也会像UIButton一样执行相应的方法.在这篇文章中我们将创建一个UISegmentedControl控件并让它显示三个部分,每一个部分都会显示不同的文本内容. 需要的条件:Xcode6.iOS8以上系统(含iOS8) 具体步骤: 1.打开Xcode并创建一个新的Single View Application,填写工程名称,比如SegmentSwift,之后填写相应的O

swift的基本语法

一 swift中的三大特性(重载;继承;多态) 1 继承 --> 1.1 举个例子来说明 : 创建一个Person类,并且再创建一个老师和学生类,同时老师和学生类都继承Person类 //创建一个类 class Person { var name = "" var age = 0 //函数 func runing() { print("人在跑步") } func study() { print("人在学习") } } --> 1.2

用Swift实现一款天气预报APP(三)

这个系列的目录: 用Swift实现一款天气预报APP(一) 用Swift实现一款天气预报APP(二) 用Swift实现一款天气预报APP(三) 通过前面的学习,一个天气预报的APP已经基本可用了.至少可以查看现在当前的天气情况和未来几个小时的天气预报了.但是,还不够完善.如果用户想要知道他要去的地方的天气怎么办.明显我们的APP在目前来说无法满足用户的这个需求.而我们的APP需要获取其他城市的天气却非常的简单.通过查看天气的API,发现只要把城市的名称作为参数就可以获得当地城市的天气预报.API