前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS内存优化

iOS内存优化

原创
作者头像
ruochen
修改2021-11-22 13:50:09
9330
修改2021-11-22 13:50:09
举报
文章被收录于专栏:若尘的技术专栏

1、用ARC管理内存undefined 2、在正确的地方使用 reuseIdentifierundefined 3、尽量把views设置为透明undefined 4、避免过于庞大的XIBundefined 5、不要阻塞主线程

6、在ImageViews中调整图片大小。如果要在UIImageView中显示一个来自bundle的图片,你应保证图片的大小和UIImageView的大小相同。在运行中缩放图片是很耗费资源的,特别是UIImageView嵌套在UIScrollView中的情况下。如果图片是从远端服务加载的你不能控制图片大小,比如在下载前调整到合适大小的话,你可以在下载完成后,最好是用backgroundundefined thread,缩放一次,然后在UIImageView中使用缩放后的图片。undefined 7、选择正确的Collection。undefined Arrays: 有序的一组值。使用index来lookup很快,使用value lookup很慢, 插入/删除很慢。undefined Dictionaries: 存储键值对。 用键来查找比较快。undefined Sets: 无序的一组值。用值来查找很快,插入/删除很快。

8、打开gzip压缩。app可能大量依赖于服务器资源,问题是我们的目标是移动设备,因此你就不能指望网络状况有多好。减小文档的一个方式就是在服务端和你的app中打开gzip。这对于文字这种能有更高压缩率的数据来说会有更显著的效用。

iOS已经在NSURLConnection中默认支持了gzip压缩,当然AFNetworking这些基于它的框架亦然。容易被忽略的内存优化如下:

1.View的渲染是很吃CPU性能和内存的,所以更多的View渲染是特别容易消化内存和cpu,特别是我们再使用UIScrollView时,多个Subview 时 我们可以适当的 把subview 进行重用。

2.懒加载,也称延迟加载,说的通俗一点,就是在开发中,当程序中需要利用的资源时。在程序启动的时候不加载资源,只有在运行当中需要一些资源时,再去加载这些资源,即在需要的时候才加载(效率低,占用内存小),所谓懒加载,写的是其get方法undefined 3.缓存的使用 比如,服务器的不经常变化的资源,图片,包括tableviewCell的行高。因为加载资源和计算高度多CPU的消耗也是比较高的undefined 4.UIView加载背景图. 常用的有下面几种undefined imageName方法undefined self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"image.jpg"]];undefined 其他的方法undefined NSString *path = [[NSBundlemainBundle]pathForResource:@"image"ofType:@"jpg"];undefined self.view.backgroundColor = [UIColorcolorWithPatternImage:[UIImageimageWithContentsOfFile:path]];

这两种方式都会在生成color时占用大量的内存。如果图片大小不够,就会平铺多张图片,不会去拉伸图片以适应View的大小。在View释放后,1中的color不会跟着释放,而是一直存在内存中;2中的color会跟着释放掉,当然再次生成color时就会再次申请内存.在UIView上再添加一个UIImageView显示图片作为UIView的背景图片undefined 注意:如果有点击事件的话, userInteractionEnabled用户交互设置为YES。undefined iOS视图都是一个图层,最先放置的图层就会在最底层,如此最先给UIView添加一个UIImageView就可以作UIView的背景图片使用啦 。undefined 其他方式(推荐)

代码语言:txt
复制
UIImage *image = [UIImageimageWithContentsOfFile:path];
代码语言:txt
复制
self.view.layer.contents = (id)image.CGImage;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • iOS已经在NSURLConnection中默认支持了gzip压缩,当然AFNetworking这些基于它的框架亦然。容易被忽略的内存优化如下:
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档