IOS性能优化,卡顿分析

2017-03-14  本文已影响1056人  起个名字真难啊2015

总结自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];
}
上一篇 下一篇

猜你喜欢

热点阅读