iOS性能优化三部曲(终极版)
2016-01-13 23:08
211 查看
iOS性能优化是一个比较头痛的问题,经过前面两篇文章的简要介绍估计大家已经有了了解,那么我们就向大牛进发吧!!!
1.加速启动时间
用户由于不懂技术,当我们的app的数据如果不能及时显示数据肯定会引起用户的吐槽,我们尽可能做的是使用恰当的异步任务加载远端、数据库数据和解析数据。
避免过多使用XIB,因为XIB的加载是在主线程中加载的,我们还是让主线程全心全意的负责UI吧!!
2.使用Autorelease Pool
NSAutoreleasePool负责释放放入到释放池中的对象,随着对象的越来越多,内存会被占用的越来越多,这是系统会将释放池中长久不用的对象进行释放
当我们要操作非常非常多的对象时,我们可以自己创建释放池,将对象慢慢地被释放,如下:
这段代码在每次遍历后释放所有autorelease对象
3.选择是否缓存图片
常见的从缓存中加载图片有两种方式,一个:是用 imageNamed:,第二个是:imageWithContentsOfFile:,第一种方法比较常见,既然两种方法都是加载图片,那两者之间有什么区别那?
imageNamed加载图片时会缓存图片。apple文档有这样一段描述:这个方法在用指定的名字在系统缓存中查找并返回一个图片对象如果存在的话,如果在缓存中没有找到相应的图片,这个方法会从指定的文档中加载然后缓存并返回对象,而imageWithContentsOfFile:方法仅仅加载图片,面对这种情况下我们如何选择?
如果你要加载一个大图并且一次性使用的话,我们就没必要缓存这个图片了,用imageWithContentsOfFile:即可,没必要浪费内存来缓存它了!相反,如果图片多次使用,我们最好使用imageNamed:,缓存图片以防以后使用
1.加速启动时间
用户由于不懂技术,当我们的app的数据如果不能及时显示数据肯定会引起用户的吐槽,我们尽可能做的是使用恰当的异步任务加载远端、数据库数据和解析数据。
避免过多使用XIB,因为XIB的加载是在主线程中加载的,我们还是让主线程全心全意的负责UI吧!!
2.使用Autorelease Pool
NSAutoreleasePool负责释放放入到释放池中的对象,随着对象的越来越多,内存会被占用的越来越多,这是系统会将释放池中长久不用的对象进行释放
当我们要操作非常非常多的对象时,我们可以自己创建释放池,将对象慢慢地被释放,如下:
NSArray *urls = An array of file urls; for (NSURL *url in urls) { @autoreleasepool { NSError *error; NSString *fileContents = [NSString stringWithContentsOfURL:url usedEncoding:NSUTF8StringEncoding error:&error]; } }
这段代码在每次遍历后释放所有autorelease对象
3.选择是否缓存图片
常见的从缓存中加载图片有两种方式,一个:是用 imageNamed:,第二个是:imageWithContentsOfFile:,第一种方法比较常见,既然两种方法都是加载图片,那两者之间有什么区别那?
imageNamed加载图片时会缓存图片。apple文档有这样一段描述:这个方法在用指定的名字在系统缓存中查找并返回一个图片对象如果存在的话,如果在缓存中没有找到相应的图片,这个方法会从指定的文档中加载然后缓存并返回对象,而imageWithContentsOfFile:方法仅仅加载图片,面对这种情况下我们如何选择?
如果你要加载一个大图并且一次性使用的话,我们就没必要缓存这个图片了,用imageWithContentsOfFile:即可,没必要浪费内存来缓存它了!相反,如果图片多次使用,我们最好使用imageNamed:,缓存图片以防以后使用
相关文章推荐
- 高效开发iOS系列 -- 为Xcode添加删除行、复制行快捷键
- iOS中json解析出现的null,nil,NSNumber的问题
- iOS GCD详解
- 《从零开始自学iOS》_04
- iOS状态栏颜色设置
- iOS键盘隐藏,下一个textField,键盘控制第三方好用框架IQKeyboardManager
- IOS 打印素数与计算天数
- iOS开发中图片的一些处理操作(背景色,透明度,合成,大小)
- iOS XML,JOSN数据解析
- iOS下的2D仿射变换机制(CGAffineTransform相关)
- 【原创】第一个iOS应用程序
- 【原创】iOS开发入门教程
- [iOS]抓包工具Charles简单使用
- iOS实例变量属性参数的区别
- iOS---如何获取手机的本地照片和相册
- iOS Size class
- IOS 多线程初探(一) - NSThread
- iOS---各种图片尺寸(新)
- iOS缓存框架-PINCache解读
- ios中相机选择