欢迎来到天天文库
浏览记录
ID:8848828
大小:82.37 KB
页数:4页
时间:2018-04-09
《深入浅出-ios程序性能优化》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、网址:edu.51CTO.com深入浅出-iOS程序性能优化iOS应用是非常注重用户体验的,不光是要求界面设计合理美观,也要求各种UI的反应灵敏,我相信大家对那种一拖就卡卡卡的TableView应用没什么好印象。还记得12306么,那个速度,相信大家都受不了。为了提高iOS的运行速度,下面我将抛砖引玉介绍一些我实践过的用来提供iOS程序运行效率的方法,与大家分享,希望能得到更多的反馈和建议。1,计算代码运行时间:相信数据,不要太相信感觉。不过要注意模拟器和真机的差异。最简单的工具就是NSDate,但精度不是太好。1.NSDate
2、* tmpStartData = [[NSDate date] retain]; 2.//You code here... 3.double deltaTime = [[NSDate date] timeIntervalSinceDate:tmpStartData]; 4.NSLog(@">>>>>>>>>>cost time = %f", deltaTime); 或者将运行代码放到如下方法的block参数中,然后返回所运行的时间:1.#import // for mach_absolut
3、e_time() and friends 2. 3.CGFloat BNRTimeBlock (void (^block)(void)) { 4. mach_timebase_info_data_t info; 5. if (mach_timebase_info(&info) != KERN_SUCCESS) return -1.0; 6. 7. uint64_t start = mach_absolute_time (); 8. block (); 9. uint6
4、4_t end = mach_absolute_time (); 10. uint64_t elapsed = end - start; 11. 12. uint64_t nanos = elapsed * info.numer / info.denom; 13. return (CGFloat)nanos / NSEC_PER_SEC; 14.} 2,善用性能分析工具。XCode自带了很多强大的分析工具,包括静态Analyze工具,以及运行时Profile工具。网址:edu.51CTO.
5、com3,关于图片优先使用[UIImageimageNamed:@""];与[[UIImagealloc] initWithContentsOfFile:]和 [UIImagealloc[initWithData:]]相比,[UIImageimageNamed:]有着更好的效率,这是因为iOS会自带cache通过 [UIImageimageNamed:]载入的图像,但该方法有一个缺点,那就是只能载入应用程序bundle中的图像,像网络下载的图像就无能无力了。我习惯的做法是自定义一个ImageCache类,自己来cache图像。尽
6、量不要使用全屏大小的背景图片;使用gradient 图片来取代硬编码的gradient;gradient图片应当尽可能窄,然后将之拉伸运用到实际场合中去。4,对于结构复杂的View,使用drawRect自绘而不是从nib中载入。5,对于TableView,重用cell;减少cell初始化的工作量,延迟装载;定制复杂cell时,使用drawRect自绘;Cache尽可能多的东西,包括cell高度;尽可能让cell不透明;避免使用图像特性,比如gradients。6,在线程中使用autoreleasepool。7,将一些不太重要的任
7、务放在idle时运行。1.- (void)idleNotificationMethod { 2. // do something here 3.} 4. 5.- (void)registerForIdleNotification 6.{ 7. [[NSNotificationCenter defaultCenter] addObserver:self 8. selector:@selector(idleNotificationMethod) 网址:edu.51CTO.com1. name
8、:@"IdleNotification" 2. object:nil]; 3. NSNotification *notification = [NSNotification 4. notificationWithName:@"I
此文档下载收益归作者所有