@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方案解决异步流程处理及回调地狱问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 明天,它就在那儿,已经在了。 20岁过后感觉时间过的越来越快,稍微一个不注意大把的时间就溜走了,除去对自己无作为的...
    急躁的蜗牛阅读 3,580评论 1 6
  • 看到此晨读文章,我竟然想跑一下题,因为我联想到之前看到奇葩大会上的一个论点:朋友是负能量狂魔,要不要跟ta绝...
    Jake先森阅读 189评论 0 1
  • 1.对于这个标题,你服不服 你已经在鸡血与颓废的边缘挣扎良久,是你的斗志不能继续激昂,还是懒惰本身就是一个不能逾越...
    古月适之不适阅读 174评论 0 0
  • 从今天开始开启十一小长假模式。早有一个不为人知的愿望:在父母75岁(但愿能到80岁)前带他们游历全中国,每年...
    筱竹华倩阅读 265评论 0 1