swift4新特性

1.

extension 里面可以直接访问 private 修饰的成员属性

swift4新特性_第1张图片
Screen Shot 2017-09-22 at 6.36.16 PM.png

2.

聚合协议类型?

swift4新特性_第2张图片
Screen Shot 2017-09-25 at 1.27.28 PM.png

新的keypaths语法

swift4新特性_第3张图片
Screen Shot 2017-09-26 at 12.27.49 PM.png

下标支持泛型

swift4新特性_第4张图片
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 新增了一个语法糖 ... 可以对字符串进行单侧边界取子串。

Screen Shot 2017-09-26 at 1.07.02 PM.png

5.String 当做collection来用


Screen Shot 2017-09-26 at 1.14.20 PM.png

6多行字符串字面量
字符串换行只能在中间插值 \n 来完成长字符串的换行,swift4 中引入了新的语法, '''''

swift4新特性_第5张图片
Screen Shot 2017-09-26 at 1.22.40 PM.png

打印出来的效果

Screen Shot 2017-09-26 at 1.22.52 PM.png

Codeable 协议
当我们要对一个对象做持久化操作的时候,需要实现NSCoding协议,当对象的属性非常多的时候,估计大家都知道写起来很恶心。
swift4提供了Codeable协议只要遵循这个协议就可以简单的实现对象归档成 json 或者 propertyList文件

swift4新特性_第6张图片
Screen Shot 2017-09-28 at 3.03.23 PM.png

程序构建过程改变

Screen Shot 2017-09-28 at 3.23.01 PM.png

swift4新特性_第7张图片
Screen Shot 2017-09-28 at 3.23.49 PM.png

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 代码

你可能感兴趣的:(swift4新特性)