Swift诞生于2014年,苹果开发者大会,WWDC,目前(2017)已经到了Swift4.0,兼容Swift3.2,并开始向下兼容,在Xcode中,已经对Swift的编译进行了优化,一些重要的framework已经实现Swift,目前仍有一部分依旧使用NS开头的OC类库,但是目前的Swift的String依旧不如NSString好用,使用过程中需要使用到OC的类,但可以实现无缝转接。
Objective-C 诞生很久了,是NEXT的公司的语言,后来被苹果收购,相对于JS、Java等语言,他比较奇特,上手起来不如Swift容易,苹果官方也一直希望能够降低objc的开发难度,同时,他是一门伟大的语言,分工明确,原生强大,不会有墨迹繁琐的感觉,真的希望你能将它作为你的第一门语言。
Swift的特点:
基本改变:
1.不用引用各种文件的头文件,减少了胶水代码的使用
2.不用区分.h以及.m文件,全部是用.swift结尾的文件
3.去除了OC中的分类(category)和类扩展(extension),只用extension来实现,增加方法或者属性
4.增加了很多关键字,用来更方便
5.不用结尾写";"号
6.强类型,必须制定类型,不同类型之间不能运算,如(Int 和Double)
重要改变:
1.声明变量用var 常量用let,并且需要初始化
2.optional可选值的使用,颠覆了以往OC的写法,与Swift的强类型一起组合使得代码可读性更强
3.可以再声明属性的同时声明get,set,willset,didset方法,其为值类型(value type);
不同于NS的引用类型(refrence type),本质已经上升到了结构体(struct);
关于值类型和引用类型的区别我下篇会有论述。
4.as 可以转换类型,as? 和 as! 分别代表转换的确定性;
as?表示转换的结果为optional as!表示强制转换,如果转换失败会崩溃。
5.Swift 对闭包(clousre)的写法不同于OC,并且如果闭包又返回值时,需要添加关键字,escaping,表明逃逸;
同时对于循环引用的解决办法也有所不同;
这一点我会在下一篇文章中论述。
6.Swift中的协议protocol,与OC不同,不能存在optional的方法,如果想要存在可选代理协议方法,那么需要增加关键字@objc;
具体实现我会在下一篇文章中论述。
关于Swift的定位,Swift是用来开发iOS、MacOs、服务器的一门语言,Apple官网上明确是这么写的,引用如下:
Swift is a fantastic way to write software, whether it’s for phones, desktops, servers, or anything else that runs code. ---来自(The Swift Programming Language (Swift 4.0.3))
我们可以看到Swift的野心何在,也正是如此,苹果对Swift要求极为严格,没错他前三个版本,Swift1、Switf2、Swift3全部不兼容,而且改变可谓是大刀阔斧,这一点我深有体会,因为我们的项目就是Swift2的,后期维护·····
Swift的未来
但是也正如此,我们看到了来自苹果官方的决心,一个坐拥万亿美元的Apple,它的亲儿子必定不会差,当AR崛起时,苹果毫不犹豫的为自家开发者提供了ARKit,使得苹果成为世界最大的AR平台,如今人工智能大火,苹果也将为自家开发者开放深度学习框架。无论从语言还是财力物力来讲,Swift将会越来越棒,别忘了他只有4岁,未来的移动端将会是Swift的天下,你大可以参考谷歌最新的语言Kotlin,简直就是一模一样。要是谷歌也支持使用Swift的话,那么他就真的一统天下了。
网友评论