溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

imageNamed , imageWithContentsOfFile , initWithContentsFile 三種圖片加載方式的區(qū)別

發(fā)布時(shí)間:2020-07-23 06:40:28 來源:網(wǎng)絡(luò) 閱讀:621 作者:Im劉亞芳 欄目:開發(fā)技術(shù)

UIImage常用的加載圖片有3種方式: p_w_picpathNamed , p_w_picpathWithContentsOfFile , initWithContentsFile .
p_w_picpathNamed:
UIImage p_w_picpath = [UIImage p_w_picpathNamed:@"p_w_picpath.gif"] . 得到的對(duì)象是autoRelease的。這個(gè)方法有點(diǎn)特殊,它在生成p_w_picpath對(duì)象的同時(shí),會(huì)把圖像數(shù)據(jù) 根據(jù)它的名字緩存在系統(tǒng)內(nèi)存中,以提高p_w_picpathNamed方法獲得相同圖片的p_w_picpath對(duì)象的性能。即使生成的對(duì)象被 autoReleasePool釋放了,這份緩存也不釋放。這對(duì)與在應(yīng)用中有大量相同圖片時(shí),非常有用,可以提高性能和內(nèi)存利用率。

p_w_picpathWithContentsOfFile :
UIp_w_picpath p_w_picpath = [UIImage p_w_picpathWithContentsOfFile:@"path"] 。得到的對(duì)象時(shí)autoRelease的,當(dāng)autoReleasePool釋放時(shí)才釋放。不系統(tǒng)緩存。

initWithContentsFile
UIp_w_picpath p_w_picpath = [[UIImage alloc] init initWithContentsFile] 。 的到的對(duì)象沒用后,要手動(dòng)release掉。不系統(tǒng)緩存。release后立即釋放,一般用在封面等圖比較大的地方。

 

使用p_w_picpathNamed方式,用同一張圖片貼多個(gè)p_w_picpathView應(yīng)該是經(jīng)過極大的優(yōu)化,耗時(shí)和內(nèi)存都極小,而使用p_w_picpathWithContentsOfFile則有巨大消耗:

生成的UIImage對(duì)象內(nèi)存地址 生成10萬個(gè)相同文件名 使用相同文件名的185
的UIImage對(duì)象的內(nèi) 個(gè) UIImageView對(duì)象
存 及耗時(shí) 進(jìn)行貼圖

內(nèi)存:28.70M->32.90M 內(nèi)存:29.69M-32.84M
p_w_picpathNamed方式 同一個(gè)內(nèi)存地址 耗時(shí):瞬時(shí) 耗時(shí):瞬時(shí)

p_w_picpathWith 內(nèi)存:29.38M->300.96M 內(nèi)存:30.21M->537.57M
ContentsOfFile 各不相同的內(nèi)存地址 耗時(shí):30秒 耗時(shí):40秒以上


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI