Swift with Hundreds of Engineers——Motivation, Architecture, Learnings
Tuomas Artman, Staff Engineer, Uber
主要讲述了Uber从OC迁移到Swift的动机、目标以及坑的解决方案。
动机主要是看到了Swift的发展潜力,而且已经初步稳定。
目标
- 确保核心业务流程的可靠
- 支撑UberApp未来的发展--分离、解耦
- 为工程师、设计师提供详细计划,确保各司其职,各有所务
- 流程自动分析、记录、调试、跟踪
- 第三方插件风险检测
- 性能调优,完美支持低版本API、低配设备
存在问题
- App体量过大,上万个文件,百万行代码
经验总结
Swift的优缺点
优点:
- Swift的语法严谨,在编译时已经避免了很多不必要的bug。使得Swift版Uber的崩溃率仅为安卓的1/3;
- 集成静态检查测试,规范工程师代码;
- 语法更贴近JAVA/JS,安卓工程师较OC更为欢迎。
缺点:
- 难以测试,objc下可以使用OCMock来mock对象。但是,由于swift的runtime比较弱,所以,swift上一般要手动写mock;
- 编译巨慢;
- 包体积较大;(原因:结构体、可选值、泛型、Swift的Runtime库)
- 启动速度。(原因:动态库链接、测试的配置文件,重新排序符号表)
解决方案:
- ~
- 弃用Xcode,使用alternatives,使用更多frameworks,-warn-long-function-bodies检测编译耗时过久的方法并尝试改善,将多个文件合并为一个将极大提高你的编译效率,Xcode配置,使用Buck。
最后的友情提示:
当你的开发团队越来越大时,你务必:
- 注意编译时间
- 检测二进制文件大小
- 尝试解决如何单元测试
- 开始使用Buck
Concurrency on iOS
Sam Davies,RayWenderlich CTO
印象:很酷,有hip-pop范😁
线程优先级翻转、线程死锁的概念。
提供了Promise方案解决异步流程处理及回调地狱问题。