iOS可能導(dǎo)致內(nèi)存泄漏的情況

1.循環(huán)引用

常見于兩個VC相互引用尚蝌,通過@class解決鞋屈;

block 循環(huán)引用旺韭,通過__weak解決胶坠。

Use Weak References to Avoid Retain Cycles

2.發(fā)生異常時

使用@try{}@catch{},當(dāng)異常發(fā)生時叔壤,無法釋放對象瞎饲。

在ARC下,無法在@finally{}里邊調(diào)用release方法炼绘,只能通過添加編譯標(biāo)識:-fobjc-arc-exceptions嗅战,添加之后會產(chǎn)生大量額外代碼,一般情況不要開啟改標(biāo)識俺亮。如果你必須要開啟改標(biāo)識來保證不出現(xiàn)異常崩潰驮捍,那你應(yīng)該重新審視你自己的代碼,你的代碼肯定是有問題的脚曾。一般只有在這種情況下使用異常捕獲:如果不捕獲異常應(yīng)用就會終止东且。如果出現(xiàn)這種情況,應(yīng)用都終止了斟珊,還擔(dān)心啥內(nèi)存泄漏。而且富纸,這中情況將要發(fā)生時囤踩,也沒有一個合適的時機(jī)來添加代碼來使得異常變得安全。

3.CoreFoundation對象沒有調(diào)用CFRelease釋放

CoreFoundation里邊是純 C 的API晓褪,需要自己釋放堵漱。

4.heap(堆)上分配的內(nèi)存沒有調(diào)用free釋放

堆上分配的內(nèi)存需要自己手動釋放。

5.大次數(shù)循環(huán)時創(chuàng)建了很多臨時變量沒有釋放

Use Autorelease Pool Blocks to Reduce High-Memory Waterline

在循環(huán)內(nèi)部添加@autoreleasepool{/*...*/}涣仿。

6.數(shù)據(jù)庫勤庐、connection示惊、socket 用完沒有關(guān)閉,文件描述符(file descriptors)用完沒有釋放愉镰。

7.調(diào)試模式下開啟僵尸調(diào)試

NSZombieEnabled=“YES” (Enable Zombie Objects),開啟之后對象占用的內(nèi)存不會被釋放米罚。

8.定時器使用完沒有調(diào)用 invalidate 方法

如果NSTimer的target指向self,而該定時器賦給了該類的一個實(shí)例變量丈探,那么timer將引用當(dāng)前類录择,當(dāng)前類的實(shí)例變量又引用了timer,就造成了循環(huán)引用碗降。您可以授權(quán)其他對象來調(diào)用invalidate方法隘竭,但是什么時機(jī)調(diào)用您是不知道的。所以該循環(huán)引用其實(shí)無法很好地解決讼渊,不過您可以考慮給NSTimer添加一個類別动看,添加一個用block實(shí)現(xiàn)的定制方法。

@interface NSTimer (LLBlocksSupport)

+ (NSTimer *)ll_scheduledTimerWithInterval:(NSTimeInterval)interval

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?block:(void(^)())block

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?repeats:repeats;

@end

@implentation NSTimer (LLBlocksSupport)

+ (NSTimer *)ll_scheduledTimerWithInterval:(NSTimeInterval)interval

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? block:(void(^)())block

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? repeats:repeats

{

? ? ? ? return [self scheduledTimerWithInterval:interval

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?target:self

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? selector:@selector(ll_blockInvoke:)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?userInfo:[block copy]

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? repeats:repeats];

}

+ (void)ll_blockInvoke:(NSTimer*)timer {

? ? ? ? void (^block)() = timer.userInfo;

? ? ? ? if (block) {

? ? ? ? ? ? ? ? block();

? ? ? ? }

}

@end

這樣爪幻,target是NSTimer自己菱皆,就不會導(dǎo)致循環(huán)引用了。

9.播放器使用完沒有調(diào)用 stop 方法

可用Xcode的Instruments里邊的Leaks檢測內(nèi)存泄漏笔咽。要用代碼檢測泄漏搔预,請 到這里

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叶组,一起剝皮案震驚了整個濱河市拯田,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌甩十,老刑警劉巖船庇,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異侣监,居然都是意外死亡鸭轮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門橄霉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窃爷,“玉大人,你說我怎么就攤上這事姓蜂“蠢澹” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵钱慢,是天一觀的道長逮京。 經(jīng)常有香客問我,道長束莫,這世上最難降的妖魔是什么懒棉? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任草描,我火速辦了婚禮,結(jié)果婚禮上策严,老公的妹妹穿的比我還像新娘穗慕。我一直安慰自己,他們只是感情好享钞,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布揍诽。 她就那樣靜靜地躺著,像睡著了一般栗竖。 火紅的嫁衣襯著肌膚如雪暑脆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天狐肢,我揣著相機(jī)與錄音添吗,去河邊找鬼。 笑死份名,一個胖子當(dāng)著我的面吹牛碟联,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播僵腺,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼鲤孵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了辰如?” 一聲冷哼從身側(cè)響起普监,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎琉兜,沒想到半個月后凯正,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡豌蟋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年廊散,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梧疲。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡允睹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幌氮,到底是詐尸還是另有隱情缭受,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布浩销,位于F島的核電站贯涎,受9級特大地震影響听哭,放射性物質(zhì)發(fā)生泄漏慢洋。R本人自食惡果不足惜塘雳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望普筹。 院中可真熱鬧败明,春花似錦、人聲如沸太防。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜒车。三九已至讳嘱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間酿愧,已是汗流浹背沥潭。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嬉挡,地道東北人钝鸽。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像庞钢,于是被迫代替她去往敵國和親拔恰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

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