ios加载图片内存优化

以7张添加到bundle中的图片通过NSTimer每2s执行一次加载操作为例:
    图片加载方式(2种):
     (1)[UIImage imageNamed:图片名];
          实现过程:
          程序加载打包到手机上 == 手机存储空间
          程序刚开始运行      == 手机内存
          点击tom的某个动作按钮,通过[UIImage imageNamed:a]掉用bundel中的a图片 == 手机内存中运行的程序先从手机缓存中去找a图片,如果a不存在于缓存中,便到手机存储空间去找,然后加载,加载后将a图片存于缓存中,如果下次再用到a图片,便直接从缓存中去找(大量图片都用此方法加载,这些图片会一直存于缓存中只能通过系统释放内存,无法人为释放,长时间几类会造成崩溃)
     (2)[[UIImage alloc]initWithContentsOfFile:图片路径];
          实现过程:
          图片每次都从bundel中去加载,不会造成图片存于缓存中无法释放
          建议用此方法


用xcode得自带的检测工具对比两种加载图片内存的变化:

在当前工程下:Product ---> Profile ---> Allocations 

截图如下:

(1)[UIImage imageNamed:图片名];

   运行40s

     

   约20s后缓存变化

    

(2)[[UIImage alloc]initWithContentsOfFile:图片路径];

     运行40s左右:

     

   约20s后,缓存变化为

   

    第二种方式加载图片,内存几乎无变化

 此文仅以7张图片循环加载为例,如果用以上两种方式加载更多图片,内存差异必然会很明显,所以如果不是经常出现的图片建议还是用第二种方式加载

 两种加载方式比较最直观的体现是前14s内存的变化,第一种方式前14秒以台阶式上升变化,内存一直在上升,说明图片一直在往缓存里存储,而后第二遍轮播开始,缓存便无明显变化。第二种方式几乎从开始加载时,内存便一直是以直线形式循环加载的(当然偶尔出现一个高点的值,并在循环周期里固定时间出现是因为某张图片比其它图片大);


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值