//初始化
UIImageView? *imageView=[[UIImageView alloc] initWithFrame:CGRectMake(100, 200, 120, 120)];
//需要設(shè)置圖片 UIImage
第一種:[imageView setImage:[UIImage imageNamed:@"1.jpeg"]];
//第二種:
NSString *filePath=[[NSBundle mainBundle] pathForResource:@"1" ofType:@"jpeg"];
UIImage *images=[UIImage imageWithContentsOfFile:filePath];
//[imageView setImage:images];
//第三種:
NSData *data=[NSData dataWithContentsOfFile:filePath];
UIImage *image2=[UIImage imageWithData:data];
[imageView setImage:image2];
其中第一 二種屬于一種困食,共兩種:
1)用imageNamed的方式加載時(shí)加叁,系統(tǒng)會(huì)把圖像Cache到內(nèi)存伏穆。如果圖像比較大睡扬,或者圖像比較多,用這種方式會(huì)消耗很大的內(nèi)存,而且釋放圖像的內(nèi)存是一件相對(duì)來(lái)說(shuō)比較麻煩的事情黔州。例如:如果利用imageNamed的方式加載圖像到一個(gè)動(dòng)態(tài)數(shù)組NSMutableArray,然后將將數(shù)組賦予一個(gè)UIView的對(duì)象的animationImages進(jìn)行逐幀動(dòng)畫(huà)周叮,那么這將會(huì)很有可能造成內(nèi)存泄露辩撑。并且釋放圖像所占據(jù)的內(nèi)存也不會(huì)那么簡(jiǎn)單。但是利用imageNamed加載圖像也有自己的優(yōu)勢(shì)仿耽。對(duì)于同一個(gè)圖像系統(tǒng)只會(huì)把它Cache到內(nèi)存一次合冀,這對(duì)于圖像的重復(fù)利用是非常有優(yōu)勢(shì)的。例如:你需要在一個(gè)TableView里重復(fù)加載同樣一個(gè)圖標(biāo)项贺,那么用imageNamed加載圖像君躺,系統(tǒng)會(huì)把那個(gè)圖標(biāo)Cache到內(nèi)存,在Table里每次利用那個(gè)圖像的時(shí)候开缎,只會(huì)把圖片指針指向同一塊內(nèi)存棕叫。這種情況使用imageNamed加載圖像就會(huì)變得非常有效。
2)利用NSData方式加載時(shí)奕删,圖像會(huì)被系統(tǒng)以數(shù)據(jù)方式加載到程序俺泣。當(dāng)你不需要重用該圖像,或者你需要將圖像以數(shù)據(jù)方式存儲(chǔ)到數(shù)據(jù)庫(kù),又或者你要通過(guò)網(wǎng)絡(luò)下載一個(gè)很大的圖像時(shí)伏钠,請(qǐng)盡量使用imageWithData的方式加載圖像横漏。
無(wú)論用哪種方式加載圖像,圖像使用結(jié)束后熟掂,一定要記得顯示釋放內(nèi)存缎浇。