国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

來回加載大量圖片內(nèi)存溢出的問題

2019-11-09 15:19:59
字體:
供稿:網(wǎng)友
總結(jié)一下UIImage的內(nèi)存使用及管理用UIImage加載圖像的方法很多,最常用的是下面兩種:1.用imageNamed函數(shù)[UIImage imageNamed:ImageName];2.用NSData的方式加載,例如:NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:extension]; NSData *image = [NSData dataWithContentsOfFile:filePath]; [UIImage imageWithData:image];由于第一種方式要寫的代碼比較少,可能比較多人利用imageNamed的方式加載圖像。其實(shí)這兩種加載方式都有各自的特點(diǎn)。1)用imageNamed的方式加載時,系統(tǒng)會把圖像Cache到內(nèi)存。如果圖像比較大,或者圖像比較多,用這種方式會消耗很大的內(nèi)存,而且釋放圖像的內(nèi)存是一件相對來說比較麻煩的事情。例如:如果利用imageNamed的方式加載圖像到一個動態(tài)數(shù)組NSMutableArray,然后將將數(shù)組賦予一個UIView的對象的animationImages進(jìn)行逐幀動畫,那么這將會很有可能造成內(nèi)存泄露。并且釋放圖像所占據(jù)的內(nèi)存也不會那么簡單。但是利用imageNamed加載圖像也有自己的優(yōu)勢。對于同一個圖像系統(tǒng)只會把它Cache到內(nèi)存一次,這對于圖像的重復(fù)利用是非常有優(yōu)勢的。例如:你需要在一個TableView里重復(fù)加載同樣一個圖標(biāo),那么用imageNamed加載圖像,系統(tǒng)會把那個圖標(biāo)Cache到內(nèi)存,在Table里每次利用那個圖像的時候,只會把圖片指針指向同一塊內(nèi)存。這種情況使用imageNamed加載圖像就會變得非常有效。2)利用NSData方式加載時,圖像會被系統(tǒng)以數(shù)據(jù)方式加載到程序。當(dāng)你不需要重用該圖像,或者你需要將圖像以數(shù)據(jù)方式存儲到數(shù)據(jù)庫,又或者你要通過網(wǎng)絡(luò)下載一個很大的圖像時,請盡量使用imageWithData的方式加載圖像。無論用哪種方式加載圖像,圖像使用結(jié)束后,一定要記得顯示釋放內(nèi)存。所以當(dāng)程序要加載大量圖片時應(yīng)盡量使用第二種方法。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 延川县| 江口县| 黄骅市| 光山县| 株洲市| 铜梁县| 政和县| 湖北省| 奇台县| 万荣县| 喀喇| 和田县| 北流市| 聊城市| 和平区| 云林县| 太湖县| 沁源县| 文昌市| 龙胜| 海城市| 大竹县| 容城县| 兴和县| 罗源县| 祁门县| 吉木萨尔县| 绍兴市| 绥中县| 平谷区| 渑池县| 湘潭市| 肇庆市| 潞城市| 嘉义县| 龙井市| 肥东县| 江北区| 东平县| 邵东县| 横峰县|