给大家总结一些常用的内存优化:
1、用ARC管理内存
2、在正确的地方使用 reuseIdentifier
3、尽量把views设置为透明
4、避免过于庞大的XIB
5、不要阻塞主线程
6、在ImageViews中调整图片大小。如果要在UIImageView中显示一个来自bundle的图片,你应保证图片的大小和UIImageView的大小相同。在运行中缩放图片是很耗费资源的,特别是UIImageView嵌套在UIScrollView中的情况下。如果图片是从远端服务加载的你不能控制图片大小,比如在下载前调整到合适大小的话,你可以在下载完成后,最好是用background
thread,缩放一次,然后在UIImageView中使用缩放后的图片。
7、选择正确的Collection。
Arrays: 有序的一组值。使用index来lookup很快,使用value lookup很慢, 插入/删除很慢。
Dictionaries: 存储键值对。 用键来查找比较快。
Sets: 无序的一组值。用值来查找很快,插入/删除很快。
8、打开gzip压缩。app可能大量依赖于服务器资源,问题是我们的目标是移动设备,因此你就不能指望网络状况有多好。减小文档的一个方式就是在服务端和你的app中打开gzip。这对于文字这种能有更高压缩率的数据来说会有更显著的效用。
iOS已经在NSURLConnection中默认支持了gzip压缩,当然AFNetworking这些基于它的框架亦然。容易被忽略的内存优化如下:
1.View的渲染是很吃CPU性能和内存的,所以更多的View渲染是特别容易消化内存和cpu,特别是我们再使用UIScrollView时,多个Subview 时 我们可以适当的 把subview 进行重用。
2.懒加载,也称延迟加载,说的通俗一点,就是在开发中,当程序中需要利用的资源时。在程序启动的时候不加载资源,只有在运行当中需要一些资源时,再去加载这些资源,即在需要的时候才加载(效率低,占用内存小),所谓懒加载,写的是其get方法
3.缓存的使用 比如,服务器的不经常变化的资源,图片,包括tableviewCell的行高。因为加载资源和计算高度多CPU的消耗也是比较高的
4.UIView加载背景图. 常用的有下面几种
imageName方法
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"image.jpg"]];
其他的方法
NSString *path = [[NSBundlemainBundle]pathForResource:@"image"ofType:@"jpg"];
self.view.backgroundColor = [UIColorcolorWithPatternImage:[UIImageimageWithContentsOfFile:path]];
这两种方式都会在生成color时占用大量的内存。如果图片大小不够,就会平铺多张图片,不会去拉伸图片以适应View的大小。在View释放后,1中的color不会跟着释放,而是一直存在内存中;2中的color会跟着释放掉,当然再次生成color时就会再次申请内存.在UIView上再添加一个UIImageView显示图片作为UIView的背景图片
注意:如果有点击事件的话, userInteractionEnabled用户交互设置为YES。
iOS视图都是一个图层,最先放置的图层就会在最底层,如此最先给UIView添加一个UIImageView就可以作UIView的背景图片使用啦 。
其他方式(推荐)
UIImage *image = [UIImageimageWithContentsOfFile:path];
self.view.layer.contents = (id)image.CGImage;
Over 如果对你有帮助希望给个关注,或者点个赞!小编非常感谢!!!