天天看點

OC中 imageName和imageWithContentOfFile的差別(Xcode9.4.1)

一.通路差別

  •  如果圖檔是被放入到Assets.xcassets
  1. 打包程式,Assets.xcassets會被打包成Assets.car.
  2. 如果被打包成Assets.car檔案,那麼就拿不到其中圖檔的全路徑
  3. 隻能通過imageName:加載圖檔
  4. 不能通過imageWithContentOfFile:加載圖檔
  • 如果圖檔時被拖入項目目錄中
  1. 圖檔會被放入到mainBundle中
  2. 放入mainBundle中才可以擷取圖檔的全路徑
  3. 可以通過imageWithContentOfFile:加載
  4. 也可以通過imageName:來加載

總結:

  • imageName可以加載Assets.car中的圖檔,也可以加載mainBundle中圖檔
  • imageWithContentsOfFile隻能加載mainBundle中圖檔

二.記憶體及使用差別

  • 使用imageName:加載圖檔
  1. 加載到記憶體當中會一直存在記憶體當中,(圖檔)不會随着對象的銷毀而銷毀。
  2. 加載進去圖檔後,占用的記憶體歸系統管理,我們是無法管理的。
  3. 相同的圖檔是不會重複加載的
  4. 加載到記憶體中占據的記憶體較大
  • 使用imageWithContentOfFile:加載圖檔
  1. 加載到記憶體中占據的記憶體較小
  2. 相同的圖檔會被重複加載到記憶體當中
  3. 加載的圖檔會随着對象的銷毀而銷毀

三.該用哪個方法加載圖檔???

  • 如果圖檔較小,并且使用頻繁的圖檔使用imageName:方法來加載
  • 如果圖檔較大,并且使用較少,使用imageWithContentOfFile:來加載。

繼續閱讀