天天看點

iOS 加載圖檔選擇imageNamed 方法還是 imageWithContentsOfFile

差別肯定是有的。根據Apple的官方文檔:

<code>p_w_picpathNamed</code>: 這個方法用一個指定的名字在系統緩存中查找并傳回一個圖檔對象如果它存在的話。如果緩存中沒有找到相應的圖檔,這個方法從指定的文檔中加載然後緩存并傳回這個對象。是以<code>p_w_picpathNamed</code>的優點是當加載時會緩存圖檔。是以當圖檔會頻繁的使用時,那麼用<code>p_w_picpathNamed</code>的方法會比較好。例如:你需要在 一個TableView裡的TableViewCell裡都加載同樣一個圖示,那麼用p_w_picpathNamed加載圖像效率很高。系統會把那個圖示Cache到記憶體,在TableViewCell裡每次利用那個圖 像的時候,隻會把圖檔指針指向同一塊記憶體。正是是以使用<code>p_w_picpathNamed</code>會緩存圖檔,即将圖檔的資料放在記憶體中,iOS的記憶體非常珍貴并且在記憶體消耗過大時,會強制釋放記憶體,即會遇到memory warnings。而在iOS系統裡面釋放圖像的記憶體是一件比較麻煩的事情,有可能會造成記憶體洩漏。例如:當一 個UIView對象的animationImages是一個裝有UIImage對象動态數組NSMutableArray,并進行逐幀動畫。當使用p_w_picpathNamed的方式加載圖像到一個動态數組NSMutableArray,這将會很有可能造成記憶體洩露。原因很顯然的。

<code>p_w_picpathWithContentsOfFile</code>:僅加載圖檔,圖像資料不會緩存。是以對于較大的圖檔以及使用情況較少時,那就可以用該方法,降低記憶體消耗。

http://blog.csdn.net/dqjyong/article/details/26969355