IOS内存优化
2018-04-22 本文已影响44人
zhangwenqiang
问题1:多个页面无法成功dealloc,内存没有被释放.界面的循环引用问题
问题2:某页面成功dealloc,但是仍有内存残留,从[UIImage imageNamed:@""],改成imageWithContentsOfFile
问题3:block引用self要慎重,如果self释放后仍有业务逻辑要在block中运行,可以再对weakSelf强引用一下。
问题4:GPUImage处理拍照的时候,内存稳定不明增长,只在debug的时候导致内存崩溃,release的时候并不会造成内存溢出,所以可以不必管它。
25个性能优化/内存优化常用方法:
- 用ARC管理内存
- 在正确的地方使用 reuseIdentifier
3.尽量把views设置为透明,opaque属性为YES
4.避免过于庞大的XIB
5.不要阻塞主线程 - 在Image Views中调整图片大小
- 选择正确的Collection,(Arrays, Dictionaries, Sets)
- 打开gzip压缩
- 重用和延迟加载(lazy load) Views
- Cache:一个极好的原则就是,缓存所需要的,也就是那些不大可能改变但是需要经常读取的东西。
11.权衡渲染方法:总得来说,你需要权衡一下利弊,到底是要性能能还是要bundle保持合适的大小。
12.处理内存警告
13.重用大开销对象 - 使用Sprite Sheets
Sprite sheet可以让渲染速度加快,甚至比标准的屏幕渲染方法节省内存。
15.避免反复处理数据:比如你需要数据来展示一个table view,最好直接从服务器取array结构的数据以避免额外的中间数据结构改变。
16.选择正确的数据格式
17.正确设定背景图片: colorWithPatternImage,小图平铺 - 减少使用Web特性
- 制作阴影时设定Shadow Path,使用shadow path的话iOS就不必每次都计算如何渲染,它使用一个预先计算好的路径。但问题是自己计算path的话可能在某些View中比较困难,且每当view的frame变化的时候你都需要去update shadow path.
- 优化Table View
21.选择正确的数据存储选项 - 加速启动时间
- 使用Autorelease Pool
- 选择是否缓存图片
- 避免日期格式转换 Unix时间戳 >C > NSDateFormatters
更详细的可以看https://blog.csdn.net/YLGWHYH/article/details/52073036