iOS内存优化

作者: ChancePro | 来源:发表于2018-11-21 18:04 被阅读4次

    内存分析

    静态分析 Analyze

    动态分析 Instruments

    1. 可以查看内存分配情况Allocations
    2. 可以查看某个操作后内存暴涨的情况。
    3. 可以查看是否内存泄漏 Leaks。

    在BaseViewController的dealloc方法里打印一下,看看离开某个页面后控制器是否被销毁了。

    内存优化

    1. cell复用,header、footer复用。
    2. 尽量把view设置不透明。
    3. 减少视图的层级。
    4. 加载图片的方式
    • UIImage imageNamed: ImageAssets 用于多个地方重复使用,加载时会缓存在内存里。
    • UIImage imageWithContentsOfFile 一般用在图片数据很大,一般不需要多次使用的情况。不会长期存在内存里。
    1. 不要阻塞主线程。耗时操作放在后台进行,如网络请求,数据库读写。dispatch_get_main_queue dispatch_get_global_queue
    2. 图片大小最好和UIImageView的大小相同。在运行中缩放图片是很耗费资源的。如果图片是网络获取的,可以在下载完成后,在后台线程缩放一次,然后在赋值。
    3. 懒加载。
    4. 缓存,缓存图片SDWebImage,缓存行高。NSCache系统回收内存的时候它会自动删掉它的内容。
    5. NSDateFormatter和NSCalendar初始化很慢,可以把它作为属性或者成员变量,只在第一次用到的时候初始化一次。
    6. 避免反复处理数据。比如tableView最好用array。
    7. 使用Shadow Path来画阴影
    8. 优化TableView
    • 正确复用cell
    • 视图尽量不透明
    • 避免渐变,图片缩放。
    • 缓存行高
    • 异步加载,缓存请求结果
    • 使用shadowPath来画阴影
    • 减少视图层级
    • 使用正确的数据结构来存储数据,减少数据处理
    • 使用rowHeight sectionHeaderHeight sectionFooterHeight来设定固定的高,不要用delegate
    1. 使用正确的数据存储
      NSUserDefaults适合小数据。
      plist 每次会读取整个文件到内存里。
      NSCoding对象归档 也会读取整个文件到内存。
      大的数据存储用SQLite或Core Data。
    2. for循环里创建对象耗内存时用Autorelease Pool

    相关文章

      网友评论

        本文标题:iOS内存优化

        本文链接:https://www.haomeiwen.com/subject/aawcqqtx.html