1个粱、使用imageNamed函數(shù):
[UIImage imageNamed:@"ImageName"];
2翻翩、使用NSData方式加載:
NSString *filePath = [[NSBundle mainBundle]pathForResource:@"fileName" ofType:"png(extension)"];
NSData *image = [NSData dataWithContentOfFile:filePath];
[UIImage imageWithData:image];
用imageNamed的方式加載時稻薇,系統(tǒng)會把圖像Cache到內(nèi)存胶征。如果圖像比較大睛低,或者圖像比較多,用這種方式會消耗很大的內(nèi)存暇昂,而且釋放圖像的 內(nèi)存是一件相對來說比較麻煩的事情伴嗡。例如:如果利用imageNamed的方式加載圖像到一個動態(tài)數(shù)組NSMutableArray,然后將將數(shù)組賦予一 個UIView的對象的animationImages進行逐幀動畫澄暮,那么這將會很有可能造成內(nèi)存泄露阱扬。但是利 用imageNamed加載圖像也有自己的優(yōu)勢。對于同一個圖像系統(tǒng)只會把它Cache到內(nèi)存一次馍刮,這對于圖像的重復利用是非常有優(yōu)勢的窃蹋。例如:你需要在 一個TableView里重復加載同樣一個圖標,那么用imageNamed加載圖像匈辱,系統(tǒng)會把那個圖標Cache到內(nèi)存杀迹,在Table里每次利用那個圖 像的時候,只會把圖片指針指向同一塊內(nèi)存树酪。這種情況使用imageNamed加載圖像就會變得非常有效嗅回。
利用NSData方式加載時,圖像會被系統(tǒng)以數(shù)據(jù)方式加載到程序绵载。當你不需要重用該圖像苛白,或者你需要將圖像以數(shù)據(jù)方式存儲到數(shù)據(jù)庫购裙,又或者你要通過網(wǎng)絡下載一個很大的圖像時鹃栽,請盡量使用imageWithData的方式加載圖像。當圖片數(shù)量多時民鼓,效率會比imageNamed低,加載速度明顯變慢夯到。
無論用哪種方式加載圖像饮亏,圖像使用結(jié)束后,一定要記得顯示釋放內(nèi)存荐开。
該文章首次發(fā)表在 簡書:我只不過是出來寫寫代碼 博客简肴,并自動同步至 騰訊云:我只不過是出來寫寫iOS 博客