iOS之圖片加載

iOS加載本地圖片有兩種方式:imageName和imageWithContentOfFile

區(qū)別

緩存:imageNamed:

只需傳入文件名.擴展名即可。
可以加載bundle中任意位置的圖片,包括main bundle中其他bundle的。

imageNamed方法創(chuàng)建對象的步驟如下:

根據(jù)圖片文件名在緩存池中查找圖片數(shù)據(jù),如存在,則創(chuàng)建對象并返回;
如果不存在,則從bundle中加載圖片數(shù)據(jù),創(chuàng)建對象并返回;
如果相應的圖片數(shù)據(jù)不存在,返回nil。

不緩存:imageWithContentsOfFile:
必須傳入圖片文件的全名(全路徑+文件名)。
無法加載Images.xcassets中的圖片。

如果圖片是被放入到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中圖片

內存及使用區(qū)別

使用imageName:加載圖片

加載到內存當中會一直存在內存當中,(圖片)不會隨著對象的銷毀而銷毀。
加載進去圖片后,占用的內存歸系統(tǒng)管理,我們是無法管理的。
相同的圖片是不會重復加載的
加載到內存中占據(jù)的內存較大

使用imageWithContentOfFile:加載圖片

加載到內存中占據(jù)的內存較小
相同的圖片會被重復加載到內存當中
加載的圖片會隨著對象的銷毀而銷毀

該用哪個方法加載圖片

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

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,681評論 1 32
  • 【內存管理】一直是iOS開發(fā)中的一個重點。 本文就帶你從內存分析開始一步步了解內存的占用情況,從真實的情況中領悟真...
    xiaoyouPrince閱讀 1,135評論 0 1
  • 資源管理包含:文本文件,F(xiàn)rameWork ,Bundle,Resource...而Images.scassets...
    osbornZ閱讀 2,789評論 0 1
  • 一. 靜態(tài)內存分析 所謂靜態(tài)內存分析, 是指在程序沒運行的時候, 通過工具對代碼直接進行分析根據(jù)代碼的上下文的語法...
    面糊閱讀 1,030評論 0 50
  • 一.資源打包 圖片是被放在image.xcassets里面部署版本在>=iOS8.0時,打包的資源包圖片被放在As...
    Idoahc閱讀 1,481評論 0 0

友情鏈接更多精彩內容