image memory manage

imageNamed: vs imageWithContentsOfFile:

  • 利用imageNamed:方法加载过的图片, 永远有缓存, 这个缓存是由系统管理的, 无法通过代码销毁缓存
  • 利用initWithContentsOfFile:/imageWithData:等方法加载过的图片, 没有缓存, 只要用完了, 就会自动销毁
    Tips
  • 小图片或使用频率比较高的图片使用imageNamed:方法加载
  • 大图片或使用频率比较低的图片使用initWithContentsOfFile:/imageWithData:方法加载
  • 由于”Deployment Target >= 7.x”放在Images.xcassets里面的所有图片,会被放到Assets.car中,无法得到图片的全路径, 只能通过图片名(imageNamed:方法)来加载图片, 永远会有缓存,所以小图片或使用频率比较高的图片可以放在Images.xcassets中,大图片和使用频率比较低低图片最好不要