今日笔者团队做的App的顶部Status Icon动画有用户反映卡顿,因此准备做一些优化工作。
首先说一下Status Bar Icon动画,设计要求的动画比较复杂,且每秒帧数要求很低,因此采用时间序列动画,用NSTimer切换动画帧做的。
想要优化这个切换过程,首先想到的就是用工具监控切换过程中各步骤耗时,于是就用到了Open Developer Tool里的时间监控工具。工具是Xcode内置的,不需要额外下载。
一、打开工具
- Xcode左上角
Xcode
->Open Developer Tool
->Instruments
打开工具弹窗:
Screenshot 2019-02-20 at 11.47.34.png - 选择第一个blank监控框(也可以直接选
Time Profiler
)
二、选取希望使用的监控控件和需要监控的进程并录制:
-
右上角加号,选用Time Profiler:
Screenshot 2019-02-20 at 11.51.15.png -
在Xcode中运行app并在Developer Tool中选中对应的程序进程:
Screenshot 2019-02-20 at 11.53.35.png - 点击红色圆圈录制按钮开始录制
三、分析
- 录制结束后可以看到CPU占用、进程池等信息,下方可以看到全部线程信息。
- 通过搜索或者在列表中直接查找,找到对应线程范围,本例中直接通过搜索
statusicon
找到了对应线程信息:
Screenshot 2019-02-20 at 10.17.12.png - 通过比对,发现
imageWithStatusIconStyle
耗时严重,点开后发现里面一个getter
耗时很大,于是就找到了对应的优化点,优化后效果如下:
Screenshot 2019-02-20 at 11.23.59.png
从而找到痛点,定点优化了执行效率。不过另外还是要说一句,不到万不得已,尽量不要在Status Icon上做序列帧动画。
另附示例App下载地址供大家参考:Rallets · 星际安全
网友评论