iOS 12
本来看片头风格大改,以为会换界面,结果只是AR Kit 2😂。个人以为不管AR、VR、还是MR,用在手机上还是有点鸡肋的。大概至少要集成到Google Glasses 的程度,才会普及吧。当然,新的控制方式是少不了的。
大部分新功能被推迟了,本次更新最大的卖点是性能优化。应用启动速度和系统响应速度有明显改进,包括iPhone 5s(个人觉得这比“吓死人的鬼科技”要实在多了)。看来电池门在内部的影响还是挺大的。
Siri增加了一个类似语音宏的功能,可以把软件的一些快捷功能设置成语音指令了。
通知分组功能。不用再满屏聊天消息了。另外提供了API接口控制分组。
macOS上倒是增加了一个黑色主题,系统级支持,希望iOS明年能跟上吧。另外一个有意思的地方,是官方在macOS 10.14上启用了UIKit支持,目前还没有开放,只是官方移植了几个应用。预计明年会对开发者开放,到时候就可以把iOS应用直接移植到mac上了。
Xcode
XCode10 变化还是挺多的,主要在功能改进和细节完善上。嗯,感谢电池门:
- Swift编译速度大幅改进,纯Swift项目,平均可以提升一倍。
- 新的Build系统,嗯,又是新的。
- 改进了语法高亮和代码提示的可靠性,这个说多了都是泪😅。
- Playground新增步进运行和增量运行。以前一点改动就要重新运行。现在可以运行代码到指定位置然后暂停,或者写一行运行一行。
- 新增了一个本地化相关的Asset,集中管理本地化翻译内容。
- Instruments可以自定义测量项目了。
Swift
Swift 5 推迟半年,今年只有4.2了,变化不大。 ABI锁定什么的无所谓啦,只希望到时候能有await/sync 。
- Enum增加了一个
CaseIterable
自动协议,提供allCases
类属性,返回枚举的所有值。 - IUO隐式可空重写了,新的实现是普通的Optinal加上一个meta flag。对使用没什么影响。
-
Hashable
改进,改成了hash(into:)
方法,由系统提供高质量的hash算法。这个主要是出于安全性的改进。另外由于hash使用了应用启动时随机生成的种子,Dictionary和Set的遍历顺序可能每次都会不一样。 - 原生随机数API,告别用arc4random拼凑随机数的日子。比如
Int.random(in: 1...10)
及Double.random(in: 0..<100)
,或者丢个硬币Bool.random()
。同时也提供RandomNumberGenerator
实现自己的随机数算法。感谢社区。 - 容器增加了
shuffle()
/shuffled()
用以打乱元素顺序,以及randomElement()
获取随机元素。 - Debug模式改了默认编译模式,编译速度提升。
Framework / UIKit
- 大幅改进了AutoLayout的性能。特别是复杂约束和嵌套约束,性能影响从次方级变成了线性。
- 新的Accelerate库,提供了大量矩阵运算(SIMD)的高级封装。Swift优化,为全部Apple硬件提供支持。这个主要是用来做图像和3D加速的,要是开源跨平台就好了。。。
- Create ML,用于快速训练模型的工具,可以在Playground里玩,只需要几行代码,在台式机上跑个几分钟,就能训练出效果很好的模型,而且模型只有几十KB到十几MB。这其实是官方提供的半定制的预生成模型,有三种:喂图片出标签,喂文本出标签,以及喂表格预测数据(官方例子是根据房子户型面积等预估一个房价)。
- ARKit 2,这个是苹果主推。然而Session里面的印式英语实在让人头疼😂,不过最大的特色应该就是支持多人互动吧,从开发者的角度来说,就是多设备共享同一个AR场景。然后是更好的对象识别,更精确的定位,以及新的跨平台格式USDZ。