一.通路差別
- 如果圖檔是被放入到Assets.xcassets
- 打包程式,Assets.xcassets會被打包成Assets.car.
- 如果被打包成Assets.car檔案,那麼就拿不到其中圖檔的全路徑
- 隻能通過imageName:加載圖檔
- 不能通過imageWithContentOfFile:加載圖檔
- 如果圖檔時被拖入項目目錄中
- 圖檔會被放入到mainBundle中
- 放入mainBundle中才可以擷取圖檔的全路徑
- 可以通過imageWithContentOfFile:加載
- 也可以通過imageName:來加載
總結:
- imageName可以加載Assets.car中的圖檔,也可以加載mainBundle中圖檔
- imageWithContentsOfFile隻能加載mainBundle中圖檔
二.記憶體及使用差別
- 使用imageName:加載圖檔
- 加載到記憶體當中會一直存在記憶體當中,(圖檔)不會随着對象的銷毀而銷毀。
- 加載進去圖檔後,占用的記憶體歸系統管理,我們是無法管理的。
- 相同的圖檔是不會重複加載的
- 加載到記憶體中占據的記憶體較大
- 使用imageWithContentOfFile:加載圖檔
- 加載到記憶體中占據的記憶體較小
- 相同的圖檔會被重複加載到記憶體當中
- 加載的圖檔會随着對象的銷毀而銷毀
三.該用哪個方法加載圖檔???
- 如果圖檔較小,并且使用頻繁的圖檔使用imageName:方法來加載
- 如果圖檔較大,并且使用較少,使用imageWithContentOfFile:來加載。