总结自YYKit作者的文章ios保持界面流畅的技巧
CPU资源消耗原因及解决方案
1,对象创建
对象的创建会分配内存,调整属性,甚至还有读取文件等操作,都比较消耗CPU资源。
建议:1,尽量用轻量的对象代替重量的对象:
eg:CALayer 比 UIView要轻量许多,如果不需要响应触摸事件的控件,用CALayer显示会
更加合适;
通过Storyboard创建视图对象时,其资源消耗会比直接通过代码创建对象要大得多;
2,尽量推迟对象创建的时间,并把对象的创建分散到多个任务中;
3,如果可以复用,就尽可能的从缓存池中复用对象;
2,对象调整
对象的调整也是耗费CPU资源的地方,
eg:CALayer并没有属性,当给属性赋值时,内部是通过运行时resolveInstanceMethod为对象
临时添加一个方法,并把对应的属性值存储在一个dictionary中,同时还会通知delegate,创
建动画等等,非常消耗资源;UIView的相关属性(frame等)都是layer映射过来的;
建议:在性能优化时,尽可能的减少对象属性的更改,视图层级调整,添加和移除视图;
3,对象销毁
通常当容器内持有大量对象时,销毁时资源的消耗也是非常明显的;
小Tip:把对象放到Block中,然后扔到后台队列去随便发送个消息以避免编译器警告,就可以让对象在
后台线程销毁了。
NSArray *tmp = self.array;
self.array = nil;
dispatch_async(queue, ^{
[tmp class];
}