@Swift2017参会笔记(部分)


Swift with Hundreds of Engineers——Motivation, Architecture, Learnings

Tuomas Artman, Staff Engineer, Uber
主要讲述了Uber从OC迁移到Swift的动机、目标以及坑的解决方案。
动机主要是看到了Swift的发展潜力,而且已经初步稳定。

目标

  • 确保核心业务流程的可靠
  • 支撑UberApp未来的发展--分离、解耦
  • 为工程师、设计师提供详细计划,确保各司其职,各有所务
  • 流程自动分析、记录、调试、跟踪
  • 第三方插件风险检测
  • 性能调优,完美支持低版本API、低配设备

存在问题

  • App体量过大,上万个文件,百万行代码

经验总结

Swift的优缺点

优点:

  1. Swift的语法严谨,在编译时已经避免了很多不必要的bug。使得Swift版Uber的崩溃率仅为安卓的1/3;
  2. 集成静态检查测试,规范工程师代码;
  3. 语法更贴近JAVA/JS,安卓工程师较OC更为欢迎。

缺点:

  1. 难以测试,objc下可以使用OCMock来mock对象。但是,由于swift的runtime比较弱,所以,swift上一般要手动写mock;
  2. 编译巨慢;
  3. 包体积较大;(原因:结构体、可选值、泛型、Swift的Runtime库)
  4. 启动速度。(原因:动态库链接、测试的配置文件,重新排序符号表)

解决方案:

  1. ~
  2. 弃用Xcode,使用alternatives,使用更多frameworks,-warn-long-function-bodies检测编译耗时过久的方法并尝试改善,将多个文件合并为一个将极大提高你的编译效率,Xcode配置,使用Buck。

最后的友情提示:
当你的开发团队越来越大时,你务必:

  1. 注意编译时间
  2. 检测二进制文件大小
  3. 尝试解决如何单元测试
  4. 开始使用Buck

Concurrency on iOS

Sam Davies,RayWenderlich CTO
印象:很酷,有hip-pop范
线程优先级翻转、线程死锁的概念。
提供了Promise方案解决异步流程处理及回调地狱问题。

你可能感兴趣的:(@Swift2017参会笔记(部分))