对象创建
对象的创建会分配内存、调整属性,甚至还有读取文件等操作,比较消耗CPU资源,尽量用轻量的对象代替重量的对象,可以对性能有所优化。
- CALayer比UIView要轻量许多,那么不需要响应触摸事件的控件,用CALayer显示会更加合适。
- 如果对象不涉及UI操作,则尽量放到后台线程去创建,但可惜的是包含有CALayer的控件,都只能在主线程创建和操作。
- 通过Storyboard创建视图对象时,其资源消耗会比直接通过代码创建对象要大非常多,在性能敏感的界面里,Storyboard并不是一个好的技术选择
- 尽量推迟对象创建的时间,并把对象的创建分散到多个任务中去。
- 如果对象可以复用,并且复用的代价比释放、创建新对象要小,那么这类对象应当尽量放到一个缓存池里复用。
对象调整
对象的调整也经常是消耗CPU资源的地方。
- 对UIView的属性进行调整时,消耗的资源要远大于一般的属性,所以在应用中,应该尽量避免减少不必要的属性修改。
- 优化性能时,应该尽量避免调整视图层次、添加和移除视图。
对象销毁
对象的销毁虽然消耗资源不多,但累积起来也是不容忽视的。通常当容器类持有大量对象时,其销毁的资源消耗就非常明显。
- 如果对象可以放到后台线程去释放,那就挪到后台线程去。
- 把对象捕获到block中,然后扔到后台队列去随便发送个消息以避免编译器警告,就可以让对象在后台线程销毁了。
诸如:
NSArray *tmp = self.array;
self.array = nil;
dispatch_async(queue, ^{
[tmp class];
});```