1.
extension 里面可以直接访问 private 修饰的成员属性
2.
聚合协议类型?
Screen Shot 2017-09-25 at 1.27.28 PM.png新的keypaths语法
下标支持泛型 Screen Shot 2017-09-26 at 12.57.05 PM.png
字符串的改进
1.Unicode字符串计算count 的正确性
2.字符串的处理速度更快,对中文文的处理速度提升2.5倍
3.Swift 4 所有String 结构下 characters 去掉,可以通过string直接访问
4.wift 4 新增了一个语法糖 ... 可以对字符串进行单侧边界取子串。
5.String 当做collection来用
Screen Shot 2017-09-26 at 1.14.20 PM.png
6多行字符串字面量
字符串换行只能在中间插值 \n 来完成长字符串的换行,swift4 中引入了新的语法, '''''
打印出来的效果
Screen Shot 2017-09-26 at 1.22.52 PM.pngCodeable 协议
当我们要对一个对象做持久化操作的时候,需要实现NSCoding协议,当对象的属性非常多的时候,估计大家都知道写起来很恶心。
swift4提供了Codeable协议只要遵循这个协议就可以简单的实现对象归档成 json 或者 propertyList文件
程序构建过程改变
OC 和 swift 混合编程的时候,编译代码的时候OC文件会产生一个bridging headers 文件,这个文件包含了所有OC代码头文件API的swift版本,然后编译每一个swift文件的时候都需要编译一遍这个庞大的swift文件。造成编译速度变慢。
有了预编译 Bridging Headers 以后,编译器会在预编译阶段把 Bridging Headers 编译一次,然后插入到每个 Swift 文件中,这样就大大提高了编译速度。
苹果宣称 Xcode 9 和 Swift 4 对于 Swift 和 Objective-C 混合编译的速度提高了 40%。但是本人实测并没有快这么多,觉得差不多。
移除未调用的协议实现
当一个类的协议扩展方法没有任何地方调用的时候会移除这个
协议扩展的实现,来达到减小包的目的。
Xcode9 兼容swift3.2 代码
网友评论