IOS内存优化

2018-04-22  本文已影响44人  zhangwenqiang

问题1:多个页面无法成功dealloc,内存没有被释放.界面的循环引用问题
问题2:某页面成功dealloc,但是仍有内存残留,从[UIImage imageNamed:@""],改成imageWithContentsOfFile
问题3:block引用self要慎重,如果self释放后仍有业务逻辑要在block中运行,可以再对weakSelf强引用一下。
问题4:GPUImage处理拍照的时候,内存稳定不明增长,只在debug的时候导致内存崩溃,release的时候并不会造成内存溢出,所以可以不必管它。
25个性能优化/内存优化常用方法:

  1. 用ARC管理内存
  2. 在正确的地方使用 reuseIdentifier
    3.尽量把views设置为透明,opaque属性为YES
    4.避免过于庞大的XIB
    5.不要阻塞主线程
  3. 在Image Views中调整图片大小
  4. 选择正确的Collection,(Arrays, Dictionaries, Sets)
  5. 打开gzip压缩
  6. 重用和延迟加载(lazy load) Views
  7. Cache:一个极好的原则就是,缓存所需要的,也就是那些不大可能改变但是需要经常读取的东西。
    11.权衡渲染方法:总得来说,你需要权衡一下利弊,到底是要性能能还是要bundle保持合适的大小。
    12.处理内存警告
    13.重用大开销对象
  8. 使用Sprite Sheets
    Sprite sheet可以让渲染速度加快,甚至比标准的屏幕渲染方法节省内存。
    15.避免反复处理数据:比如你需要数据来展示一个table view,最好直接从服务器取array结构的数据以避免额外的中间数据结构改变。
    16.选择正确的数据格式
    17.正确设定背景图片: colorWithPatternImage,小图平铺
  9. 减少使用Web特性
  10. 制作阴影时设定Shadow Path,使用shadow path的话iOS就不必每次都计算如何渲染,它使用一个预先计算好的路径。但问题是自己计算path的话可能在某些View中比较困难,且每当view的frame变化的时候你都需要去update shadow path.
  11. 优化Table View
    21.选择正确的数据存储选项
  12. 加速启动时间
  13. 使用Autorelease Pool
  14. 选择是否缓存图片
  15. 避免日期格式转换 Unix时间戳 >C > NSDateFormatters

更详细的可以看https://blog.csdn.net/YLGWHYH/article/details/52073036

上一篇 下一篇

猜你喜欢

热点阅读