|
1.对象的创建会分配内存、调整属性(view的frame、bounds、transform等)、甚至还有读取文件等操作,比较消耗资源。
2.用轻量级的对象代替重量级的对象,比如如果不需要响应时间的话,可以使用CALayer代替UIView。
3.不涉及UI操作尽量放到后台线程去处理。
4.通过StoryBoard创建视图对象时,其资源消耗会比直接通过代码创建视图对象要大得多
5.如果对象可以复用,尽量加到复用池中。
6.视图的布局计算是最为常见的消耗CPU的地方。如果能在后台线程提前计算好视图布局、并且对视图布局进行缓存,那么这块基本就不会产生性能问题(性能最好的布局是直接使用frame布局,如果不想手动调整frame属性,可以使用第三方工具方法替代:top、bottom、left、right、width、height)
7.对于复杂的视图,使用autolayout会随着视图数量的增长,CPU的消耗也会呈指数增长。
8.文本计算宽度会占用很大一部分资源,并且不可避免(也可以使用[NSAttributedStringBoundingRectWithSize:Option:context]来计算文本宽度)。有这方面优化需求的,可以使用Core Text绘制文本,自己计算宽高。
9.图片的解码,当使用UImage或CGImageSource的那几个方法创建图片时,图片数据并不会立刻解码,只有当图片设置到UImageView或者CALayer.contents中去,并且CALayer被提交到GPU前,CGImage中的数据才会得到解码,这一步是发生在主线程的,并且不可避免。如果想绕开这个机制,常见的做法是在后台线程先把图片绘制到CGBitMapContext中,然后从Bitmap直接创建图片。
10.图片的绘制通常是指那些以CG开头的方法,把图像绘制到画布中,如何从画布创建图片并显示这样的一个过程。最常见的方法就是[UIView drawRect:]。由于CoreGraphic方法通常都是线程安全的,所以图像的绘制可以很容易放到后台线程中进行。
|
|