iOS内存优化

  1. 把view设置为不透明,不透明的Views应该设置它们的opaque属性为YES。默认为 YES。
    a) 如果视图存在半透明会导致在GPU里边最后合成像素颜色的时候获取多个图层的颜色进行混合,处于半透明中的每个像素都会执行颜色计算操作,浪费资源。

  2. 对于仅使用一次或是使用频率很低的大图片资源不要使用UIImage(named: "")而使用UIImage(contentsOfFile: "")
    a) UIImage(named: "")返回的对象会保存在缓存中,只有退出程序才会释放内存;但下一次调用快。
    b) UIImage(contentsOfFile: "")返回的对象不会保存在缓存中,一旦对象销毁就会释放内存。

  3. 基于颜色创建纯色的图片时,只需要创建出宽和高均为1px大小的图像就够了

  4. 在自定义的UIView子类中,利用drawRect:方法进行绘制改为CAShapeLayer
    a) 自定义drawRect会使APP消耗大量的内存,视图越大,消耗的越多
    b) 大部分情况下,绘制需求都可以通过CAShapeLayer实现,CAShapeLayer属于CoreAnimation框架,通过GPU来渲染图形,节省性能。
    c) 动画渲染直接提交给手机GPU,不消耗内存渲染快速。
    d) CAShapeLayer使用了硬件加速,绘制同一图形会比用Core Graphics快很多。

  5. 在Image Views中尽量保证图片的大小和UIImageView的大小相同,在运行中缩放图片是很耗费资源的
    a) 如果要修改大小可以在后台线程中修改大小并解码、绘制。

  6. 重用和延迟加载(lazy load) Views

  7. 大图分片加载
    a) 苹果demo

  8. 大量局部变量使用自动释放池

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 把views设置为透明,透明的Views你应该设置它们的opaque属性为YES。 原因是这会使系统[ht...
    浪人残风阅读 1,572评论 0 1
  • 内存优化工具 Instruments的Allocations 这个工具能显示出应用的实际内存占用,并可以按大小进行...
    Foxhoundsun阅读 1,363评论 0 10
  • 基础优化策略 延迟分配&懒分配 高效初始化内存malloc分配的小块内存,并不会保证清零初始化,一般会配上mems...
    人生看淡不服就干阅读 2,325评论 0 4
  • 1. 用ARC管理内存 ARC(Automatic ReferenceCounting, 自动引用计数),它避免了...
    anyurchao阅读 2,846评论 0 16
  • 一. 视图控制对象通过alloc和init来创建,但是视图控制对象不会在创建的那一刻就马上创建相应的视图,而是等到...
    iOS菜鸟攻城狮阅读 643评论 0 7