一、APP启动性能优化。
APP启动主要分冷启动和热启动,主要优化冷启动。
1.尽量减少didFinishLauching方法里的工作,在满足业务需要的前提下,didFinishLauching在主线程里做的事情越少越好。
2.尽可能做更多的异步任务,比如加载远端或者数据库数据,解析数据。
3.不要用太大的XIB,因为他们是在主线程上加载的。
4.可以在Xcode中Edit->Auguments将环境变量DYLD-PRINT-STATISTICS设为1查看pre-main的耗时。
5.排查没有用的dylib,减少dylib的数量。
6.压缩图片,删除一些无用的图片。对于使用较少,消耗内存较大的图片,建议使用imageWithContentsOfFile方法,不要使用imageName方法。
7.少在+load()方法里做事情,尽量推迟到+initiailize。
二、APP顿卡优化。
1.尽量减少CPU/GPU的资源消耗。
2.不要频繁调用UIView的相关属性,比如frame、bounds、transform。
3.提前计算好布局,在有需要的时候一次性调整对应的属性,不要多次修改。
4.尽量把耗时操作放在子线程,控制线程的最大并发数。
5.尽量避免短时间内显示大量的图片,大图可以拆分成多张图显示。
6.尽量避免出现离屏渲染,离屏渲染会消耗性能。
7.tableView优化。 a.正确重用cells,在cellForRowIndexPath:回调的时候只创建,快递返回cell,不绑定数据,在willDisplayCell的时候才赋值、 b.缓存高度,在UITableView不断滑动时,会不断调用heigthForRowAtIndexPath:,如果cell需要自适应高度,每次回调都要计算高度,就会导致UI顿卡,可以用字典,NSCache缓存、 c.如果cell内容有web的话,使用异步加载,缓存请求结果、 d.尽量减少subviews的数量、 f.尽量使用贝塞尔曲线画圆角、 g.图片的alpha尽量不设置透明度、
三、APP其他优化
1.适当使用AutoreleasePool,NSAutoreleasePool负责释放block中的autoreleased object。一般情况下它会被UIKit自动释放,但是有些情况也需要手动去创建。比如说创建了很多临时对象,你会发现内存一直在减少直到这些对象被release的时候。这是因为只有当UIKit用光了autorelease pool memory才会被释放。自己手动创建就可以避免。
2.避免大量使用日期格式转换,如果避免不了,就重用他们,可以通过添加属性到class里或者创建变量来实现
3.选择正确的数据存储方式:NSUserDefaults、NSCoding、Core Data、SQLite、FMDB、
4.Cache:FIFO、LRU、LFU。
5.instruments: a.Time Profiler,性能分析,查看程序哪些部分最耗时、 b.Leaks,检查内存,看是否有内存泄露、 c.Zombies,检查是否访问了僵尸对象、野指针、 d.Allocations,用来检查内存、 e.Core Animation,显示程序显卡性能以及CPU使用情况。
6.延时加载。
网友评论