swift 3.1已经发布了,新版本增强了系统兼容性,改变了快照版本的生成方式,修复了编译器不会接受从来没有出现过的代码,具有安全系数高、语法渐变、高效强大的特点,有需要的朋友赶快下载新版本体验一下吧!

基本介绍
确切地说,Swift 3.1并不会达到Swift 4预期的兼容性,它只是更加方便使用而已。此外,Swift 3.1的源代码兼容性明确包括macOS、iOS等系统的Apple SDK,这意味着这种兼容性只包括代码兼容性的更改。苹果工程师Ewa Matejska解释说,所有破坏源代码兼容性的更改都会被仔细评估,以衡量它们对源代码兼容性带来的影响。需要特别指出的是,一些以后可能会破坏“边缘情况”(“fringe case”)的编译器问题修复将被可以预见地接受,而对现有API的更改应该为兼容性带来显着的好处。
Swift 3.1同样会改变快照版本生成的方式,以后将试图每天产生新的快照版本。这将为Swift社区提供更精细的粒度来测试新功能,并确保与以前的版本相比将会有更多的发布规律。
Swift 3.1将于2017年1月16日从master拉出新的branch。从那以后,master分支将专门用于Swift 4的开发工作,尽管根据发布管理来判断一些显著的更改仍然会保留,但是目前并不能保证master分支的任何更改一定会出现在最终的Swift 3.1中。
总的来说,Swift 3.1的版本更新只是对核心语言和Swift Package Manager的功能进行了一些增强,同时改进了对Linux系统的语言支持。
软件功能
闭包的统一与函数指针
元组和多个返回值
泛型
快速而简洁的迭代范围或集合
支持的方法,扩展的协议结构。
函数式编程模式,例如:映射(map)和过滤器(filter)
互动游乐
操场使编写语言代码难以置信的简单和有趣。输入一行代码,结果立即出现。如果您的代码通过一个循环运行一段时间你可以看它在时间轴助理进展。在时间线中的图表显示变量,组成一个视图时绘制每一步,并能起到一个动画SpriteKit现场。当你在操场上完善你的代码,只需将代码到您的项目。有了游乐场,您可以:
设计一种新的算法,看其工作的每一步
创建新的测试,验证他们推动到您的测试套件前工作
尝试新的API来磨练你的Swift的编码技巧
软件特色
语法简便
Swift是编程语言的最新研究成果,并结合数十年的经验建设苹果平台的结果。结转自Objective-C的命名参数表示在一个干净的语法,使得Swift的API更容易阅读和维护。
推断类型使代码更干净,不易犯错误,而模块消除了头,并提供命名空间。内存自动管理,而你甚至都不需要输入分号。
专为安全
Swift消除了不安全的代码。变量总是初始化之前使用,数组和整数检查溢出,内存自动管理。语法被调整到可以很容易地定义你的意图 - 例如,简单的三个字符的关键字定义一个变量(var)或常量(let)。
在Swift的安全模式被调整为强大的Cocoa和Cocoa Touch的API。认识和妥善处理其中的对象是零案件是基本的框架和Swift的代码使这个非常容易。添加一个字符可以代替曾经Objective-C中整行的代码。这一相互配合,使构建iOS和Mac应用程序比以前更加容易和安全。
高效强大
Swift是为高效而强大的编程而创建的语言。Swift采用了高性能的Apple LLVM编译器,Swift代码转化为优化过的本地代码,充分利用现代化的Mac,iPhone和iPad的硬件。语法和标准库也非常简洁,让编程的流程大大缩短、简化
Swift采用了C和Objective-C语言中的优秀成分。Swift也包括了很多其他语言的特征,如类型,流程控制和运算符。Swift还提供了面向对象的特性,如类与协议。
swift语法介绍
1.自动引用计数工作机制
1.1 swift和oc一样,采用自动引用计数来管理内存
1.2 当有强引用指向对象,对象的引用计数 +1 , 强引用消失,自动计数 -1
1.3 如果对象的引用计数为0 , 那么该对象会被销毁
2.循环引用
2.1 什么是循环引用?
两个(或多个)对象互相强引用
2.2 循环引用对项目有什么影响
循环引用会让对象不会被销毁,一直保存在内存中,可能导致项目运行不畅
2.3 怎么解决强引用问题?
只需要让其中一个对象对另外一个对象的引用变为弱引用即可
在swift中用waek 相当于OC中的 __weak ,或者使用 unowned 相当于OC中的 __unsafe_unretained
3.weak 和 unowned的区别
3.1 相同点:
都是一个弱引用,不会对对象进行retain
3.2 不同点
3.21 weak(__weak) :当弱引用指向的对象销毁时,该引用会指向nil 所以用weak指向的数据类型为可选类型
3.22 unowned(__unsafe_unretained) :当弱引用指向的对象销毁时,依然指向原来的内存地址, 容易产生错误(野指针/访问僵尸对象)
3.23 unowned不支持可选类型