ios开发高手进阶

  1. swift swizzling

    • 交换两个方法的实现 -> 如在系统类的函数里增加统计、日志等代码
    • 增加类的方法或者变量 (修改framework的实现)
    • 获取类的所有方法和属性
    • 利用热更新技术解bug
      (selectors, methods, implementations的概念)
      (framework里可以通过extension uiapplication,在next里实现)
  2. swift的优势

    • swift容易阅读和写:如类的初始化少了alloc、init,拼接数组、字符串,方法调用.等
    • 更易于维护:文件数量少,只有.swift, 而不是.h+.m
    • 更安全:optional类型,?!
    • 函数式编程,减少大量代码
    • 更高效:swift语言引擎

    缺点:swift语言不稳定,升级语言版本导致工程大量改动;无法直接和c\c++混编;(其他如:开源、技术文章都没问题)

  3. 提效:使用合适的工具,合理利用第三方资源

    • cocoapod、maven
    • jenkins 持续集成
    • jira
    • 单元测试
    • 组件库
    • react native实践
    • 函数式编程
  4. 提升app质量:规范开发流程,提升团队成员编码能力和审美能力

    • 代码质量
      • 代码解耦:组件化
      • 规范化:编码规范
      • 代码走查
      • 踩坑记录总结
    • 美观性
      • 制定规范,统一风格
      • CI:紧跟ios的风格变更
    • 易用性(薄弱:缺少团队支持)
      • 用户点击数据统计
      • 参考同行
      • 踩坑记录
  5. 团队能力提升:

    • 专题培训
    • 读书会
    • wiki:环境搭建、工具分享、技术积累
  6. 性能优化:instruments
    可能会影响性能的原因:肆意调用数据库而没有用cache、复杂UI大量使用约束、离屏渲染、像素混合

    • 非主线程处理
    • 异步处理事件
    • i/o性能优化:
      • NSCache
    • 控制 App 的 Wake 次数:通知,VoIP,定位,蓝牙等都会使设备从 Standby 状态唤起。
    • 及时关闭摄像头、电筒等耗电大户:如二维码扫描等页面
    • 预加载资源,如图片、网络数据等等
    • 对大图片进行缩放
    • 降低布局的复杂度
    • UIView的创建代价很大,一些可以复用的view可以cache。如tableview的cell
    • 缓存:uiview、图片、布局、网络数据
      参考:
      深入剖析 iOS 性能优化
      ios性能优化探索
      iOS性能优化系列篇之“列表流畅度优化”
  7. gcd: 异步执行回主线程\qos\after\DispatchGroup\Semaphore\Barrier \串行队列\并行队列
    Swift4.0 - GCD

  8. CF:core foundation 是比较底层的C语言的库

  9. runloop:保持线程不退出
    多线程(nsthread、gcd、phtread)

  10. 内存管理:
    引用计数(强引用,弱引用)
    场景:timer、block、gcd、代理、泛型

  11. swift特性语言:lazy、willset\didset\get\set、嵌套函数、protocol的组合、

  12. animation

  13. AB测试

Contents
,