iOS中imageNamed與imageWithContentsOfFile的區(qū)別

iOS中根據(jù)本地icon加載出一個UIImage對象有兩種方法:

1.  UIImage *img1 =  [UIImage imageNamed:@"pic1"];
2.  UIImage *img2 =  [UIImage imageWithContentsOfFile:filePath];

那么這兩種方式有什么區(qū)別嗎?
這是肯定的:

  • imageNamed方法
  1. 后面的參數(shù)是icon的名字.圖片可以存在項目中,也可以存在Assets中.
  2. 這個方法只適合一些中小型的圖片讀取,而一些比較大的資源圖片并不適合用這個方法.
  3. 此外,這個方法加載完圖片后會存在Cache里面,當(dāng)用這個方法加載的時候,它會在系統(tǒng)緩存中查找并返回一個對象,如果緩存中沒有找到對應(yīng)的對象,這個方法會從指定的文檔中加載,再返回對象.
  4. 優(yōu)缺點: <優(yōu)點>.當(dāng)你需要在一個TableView里的Cell里都加載同樣一個圖標(biāo)的時候,那么用imageNamed加載圖像效率很高。系統(tǒng)會把那個圖標(biāo)Cache到內(nèi)存,在TableViewCell里每次需要這個圖像的時候,只會把圖片指針指向同一塊內(nèi)存。 <缺點>.由于這個方法會把加載的圖片存入緩存,雖然提高了運行速度,但是非常消耗內(nèi)存,一些圖片只需要加載一次,根本不會再次使用,但是還是會被加載到內(nèi)存中.這樣做非常消耗內(nèi)存,尤其是加載一些大圖的時候.當(dāng)內(nèi)存過大時,會出現(xiàn)內(nèi)存警告,或者內(nèi)存泄漏.雖然現(xiàn)在蘋果手機(jī)內(nèi)存做了提升,但是還是有必要注意的.
  • imageWithContentsOfFile方法
  1. 后面的參數(shù)是圖片的路徑,格式是字符串
  2. 這個方法加載圖片時,會根據(jù)路徑查找,直接加載,使用完后釋放,不會存入內(nèi)存.
  3. 這個方法適合一些不常用的圖片或icon,或者資源比較大圖片.
  4. 優(yōu)缺點: <優(yōu)點>.可以節(jié)省內(nèi)存 <缺點>.消耗性能.

總結(jié): 一些小的icon可以存在Assets里面.用imageNamed加載. 一些比較大的,使用頻率低的可以建立一個bundle存放圖片,使用imageWithContentsOfFile加載.

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容