2016 年终总结

时间飞逝,岁月如梭,转眼间 2016 年已经接近尾声。入公司以来,在熟悉 iOS 组件的基础上,开始承担起了更多的工作内容,也得到了不少结果和经验教训,现将工作总结如下

项目相关

UI 相关基础组件

  1. Refresh 组件的开发和维护。

Refresh 以 Category 方式支持 header(下拉刷新的 loading 动画)、Footer(上拉加载更多的动画)以及当没有更多内容时 Footer 的位置会显示 NoMoreDataView。

  1. 编写 AlertView、ActivityIndicatorView、Notice 等组件的测试用例。

AlertView、ActivityIndicatorView、Notice 等组件是我在实习期间开发的组件,为所有业务团队提供基础的弹窗、加载页面 loading、弹窗通知等功能。

稳定性相关

  1. 基础组件的单元/接口测试以及使用标准库重建部分基础组件

覆盖 iOS 基础组件的接口测试,发现接口层面的问题并进行修复。另外,还发现并解决了判空逻辑缺失可能会导致 crash、组件版本依赖出错、Podfile 书写有错等问题。

  1. iOS 主客拆分项目-归零计划

在主客代码冗余复杂,性能降低的背景下,将主客里的代码以组件的形式拆出,为后续的启动优化、缩短打包时间、提升主客编译速度和性能优化打好基础,解决了主客工程中残留组件和代码耦合的问题。现已陆续拆出十余个组件,第二阶段对提示评价 Review、提示更新 Update 等组件做了一些逻辑上的优化,统一将配置迁移到配置中心,删除了冗余的代码。

性能相关

  1. 越狱插件二次开发

为了与同行(手淘、天猫)的 app 进行 FPS 的比较,在没有同行 app 源码的情况下,只能在越狱机上开发一个插件来获取 FPS 数据。整个过程还是蛮有意思的,感觉自己见了世面。

fps图

  1. 主客磁盘空间信息收集

获取线上 App 的磁盘空间占用情况,打点上报相关文件的占用大小。

  1. 全局 hook 主客方法进行耗时统计

主客启动时,将所有方法统一都替换为具有前后时间打点的方法,统计出各个方法在执行时的耗时。思路挺简单的,但方案的调研与制订也颇有周折,到具体执行时,发现会与已有的 swizzle 方法冲突、只能在真机上执行、有的类不能 swizzle 否则会 crash 等问题。解决起来挺简单的,但找到原因才是关键,会出一篇文章说说踩坑之旅。

其它

  1. 图片库规则等改走配置中心

图片库规则原先是 hard code 写死在主客的文件里,一旦有变动,只能在发版的时候才能修改,并不能灵活的添加或改动。可以通过 Houston 配置中心,下发需要的图片库规则,将规则的配置解耦到了配置中心,主客只需要读取即可。

  1. Debug 等组件的开发和维护。

添加了运营同学使用的时光机功能以及扫码免输验证码等功能,为运营、开发和测试同学提供便利的 debug 工具,节省时间,提高工作效率。

个人成长

测试相关

接触组件的测试用例/接口测试,并解决发现的边界问题,可以更加全面的了解、或者说换个角度观察所写的代码。

熟练使用了 Kiwi 测试工具(毕竟写了所有的 iOS 组件接口测试);熟悉了各基础组件,提升对基础组件的认识和理解;由于原组件工程存在不规范的情况,还需要进行组件标准库重建,便于产出静态库。

技术相关

iOS 相关原理和技术接触的越来越深入,就不一一列举了,个人觉得比较惊艳 amazing 的有以下两个。

  1. 越狱开发相关

之前也没有相关的越狱插件开发经验,《iOS应用逆向工程》这本书给了我不少的帮助,theos 环境的搭建、越狱插件 tweak 的编写以及 NSLog 调试法(呵呵🙄)等。

  1. 全局 hook

    想想都觉得炫酷狂拽吊炸天, 而具体实施时,处处踩坑,一个一个绕过去的感觉非常有意思。

2017,come on!

文章目录
  1. 1. 项目相关
    1. 1.1. UI 相关基础组件
    2. 1.2. 稳定性相关
    3. 1.3. 性能相关
    4. 1.4. 其它
  2. 2. 个人成长
    1. 2.1. 测试相关
    2. 2.2. 技术相关