ios:instrument調(diào)試中發(fā)現(xiàn)VM:CGRaster Data暴增的問(wèn)題

最近項(xiàng)目中有截屏分享的需求,截取整個(gè)uitableview的contentview颠放,然后分享岖是。

截屏的思路是分段截取轴咱,網(wǎng)上搜了有人給的方法是將uitableview的frame設(shè)置成contentsize大小,鋪開(kāi)之后一次性render剪廉,但是這樣可以想象如果tableview太長(zhǎng)邑雅,內(nèi)存肯定要崩,而且鋪開(kāi)tableview之后妈经,cell的重用機(jī)制就失效了淮野,想想要初始化多少個(gè)cell來(lái)展示所有數(shù)據(jù)。因此最好是分屏截取吹泡,截一張骤星,保存在本地,然后截取滾動(dòng)到下一塊爆哑。依次全部截取完成之后洞难,再把所有圖片拼接起來(lái)。

但是調(diào)試過(guò)程中發(fā)現(xiàn)內(nèi)存仍然會(huì)暴增揭朝,每截一次圖队贱,內(nèi)存就會(huì)增加一節(jié),并且不會(huì)回落潭袱。instrument調(diào)試發(fā)現(xiàn)所有內(nèi)存的增加都是叫一個(gè)VM:CG raster data 的對(duì)象

網(wǎng)上各種查柱嫌,大部分講的都是sdwebimage的問(wèn)題,的確屯换,sdwebimage為了加快圖片載入速度编丘,默認(rèn)開(kāi)啟了使用內(nèi)存來(lái)緩存圖片信息,如果發(fā)現(xiàn)在滾動(dòng)tableview時(shí)內(nèi)存暴增彤悔,可能是因?yàn)檫@個(gè)原因嘉抓,關(guān)閉這個(gè)選項(xiàng)即可:

sd也給出了說(shuō)明:


SDImageCache.h
SDWebImageDownloader.h

但是截圖過(guò)程中,如果只是簡(jiǎn)單的從context中獲取圖片的代碼晕窑,發(fā)現(xiàn)也會(huì)導(dǎo)致內(nèi)存暴增抑片,就要考慮其他原因了:

簡(jiǎn)單的截屏代碼

instrument表現(xiàn)內(nèi)存增加如下:

會(huì)發(fā)現(xiàn),多次截圖杨赤,內(nèi)存穩(wěn)步遞增敞斋,cgrasterdata對(duì)象生成的個(gè)數(shù)跟全部個(gè)數(shù)相等级遭,意味著之前生成的全部沒(méi)有釋放掉。點(diǎn)擊右側(cè)箭頭進(jìn)入渺尘,會(huì)發(fā)現(xiàn)所有的對(duì)象產(chǎn)生的地方都是相同的:

雙擊進(jìn)入代碼挫鸽,會(huì)發(fā)現(xiàn)對(duì)象初始化的地方在:

UIImage*image =UIGraphicsGetImageFromCurrentImageContext();

這一行,也就是說(shuō)該對(duì)象實(shí)在生成image的時(shí)候產(chǎn)生的鸥跟。未釋放的原因就可能是dealloc出問(wèn)題了

經(jīng)過(guò)各種demo排查丢郊,發(fā)現(xiàn)是我在uiimage的分類中重寫了dealloc方法。医咨。枫匾。用來(lái)釋放運(yùn)行時(shí)動(dòng)態(tài)添加的屬性。刪掉dealloc方法后正常拟淮。因此干茉,在分類中千萬(wàn)要小心替換系統(tǒng)的方法,如果重寫了要注意調(diào)回被你替換調(diào)的系統(tǒng)方法很泊,因?yàn)榉诸惻c繼承不同角虫,繼承可以調(diào)super去調(diào)父類的方法,分類的話就是完全覆蓋了分類的方法委造。分類里方法的命名也盡量帶上自己的前綴戳鹅,因?yàn)椴荒鼙WC某個(gè)版本里面就可能會(huì)出現(xiàn)新的方法與自己的方法同名

如果有時(shí)候一定要在分類中重寫系統(tǒng)的方法(尤其是dealloc最經(jīng)常,需要釋放一些資源)可以參考下面的寫法:

原理:load時(shí)通過(guò)運(yùn)行時(shí)交換dealloc與customdealloc的實(shí)現(xiàn)昏兆,這樣系統(tǒng)調(diào)用dealloc時(shí)會(huì)調(diào)用到我們自定義的實(shí)現(xiàn)里枫虏,而在自定義的實(shí)現(xiàn)里重新用performselector去調(diào)用customdealloc的方法,因?yàn)橐呀?jīng)叫喚過(guò)爬虱,會(huì)調(diào)用到系統(tǒng)的dealloc的實(shí)現(xiàn)隶债,從而實(shí)現(xiàn)在不覆蓋系統(tǒng)方法的情況下添加自定義的操作

以上純屬個(gè)人猜測(cè)與實(shí)踐,使用之后解決了uiimage無(wú)法釋放的問(wèn)題跑筝。至于有沒(méi)有其問(wèn)題還么發(fā)現(xiàn)死讹,希望小伙伴們發(fā)現(xiàn)了的話及時(shí)留言告知,可以一起探索继蜡,謝謝~~

第一次寫文章哎回俐!ios菜鳥(niǎo)一枚,寫的不好請(qǐng)見(jiàn)諒~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末稀并,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子单默,更是在濱河造成了極大的恐慌碘举,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搁廓,死亡現(xiàn)場(chǎng)離奇詭異引颈,居然都是意外死亡耕皮,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門蝙场,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)凌停,“玉大人,你說(shuō)我怎么就攤上這事售滤》D猓” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵完箩,是天一觀的道長(zhǎng)赐俗。 經(jīng)常有香客問(wèn)我,道長(zhǎng)弊知,這世上最難降的妖魔是什么阻逮? 我笑而不...
    開(kāi)封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮秩彤,結(jié)果婚禮上叔扼,老公的妹妹穿的比我還像新娘。我一直安慰自己漫雷,他們只是感情好币励,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著珊拼,像睡著了一般食呻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上澎现,一...
    開(kāi)封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天仅胞,我揣著相機(jī)與錄音,去河邊找鬼剑辫。 笑死干旧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的妹蔽。 我是一名探鬼主播椎眯,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼胳岂!你這毒婦竟也來(lái)了编整?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤乳丰,失蹤者是張志新(化名)和其女友劉穎掌测,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體产园,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡汞斧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年夜郁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粘勒。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡竞端,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出庙睡,到底是詐尸還是另有隱情事富,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布埃撵,位于F島的核電站赵颅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏暂刘。R本人自食惡果不足惜饺谬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谣拣。 院中可真熱鬧募寨,春花似錦、人聲如沸森缠。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)贵涵。三九已至列肢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宾茂,已是汗流浹背瓷马。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留跨晴,地道東北人欧聘。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像端盆,于是被迫代替她去往敵國(guó)和親怀骤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容