原帖地址
优化点:
1、对象创建
能使用轻量级的对象就不需要使用高级的,可以优化性能。CALayer比UIView性能好。对象的操作如果不涉及UI操作,应该尽量放在后台线程中做。在性能要求高的情况下Storyboard不是好的选择。
2、对象调整
避免对象的调整,诸如View的移动,frame的更改之类。
3、对象销毁
销毁性能损耗不多,但是极少成多,可以放到后台。
NSArray *tmp = self.array;
self.array = nil;
dispatch_async(
[tmp release];
);
4、布局计算
Autolayout在视图多了的情况很消耗性能,尽可能的少用?(有些疑问,如果不用这个计算frame的方法呢?)具体数据可以看这个文章:http://pilky.me/36/。可以使用一些工具调整fram:ComponenKit、AsyncDisplayKit.
5、文本计算
复杂文本的宽高计算问题,用[NSAttributedString boundingRectWithSize:Options:context:]计算文本,然后用[NSttributedString drawWithRect:Options:context]绘制文本。
6、文本绘制
使用CoreText自定义控件。
7、图片
图片解码:CGBitmapContent在后台线程解码图片
图像绘制:
- (void)display {
dispatch_async(background,^{
CGContentRef ctx = CGBitmapContextCreate;
// draw
CGImageRef img = CGBitmapContextCreateImage(ctx);
CFRelease(ctx);
dispatch_async(mainQueue,^{
layer.content = img;
});
});
}