ARC內(nèi)存泄露的情況

ARC(Automatic Reference Counting),是iOS 5推出的新功能。為了解決MRC管理下的內(nèi)存泄漏,野指針等問題。

ARC雖然不需要手動去調(diào)用retain和release消息,編譯器會自動在合適的位置為我們添加這些代碼,但是ARC還是存在內(nèi)存泄露的。
比如

.循環(huán)參照

A有個屬性參照B,B有個屬性參照A,如果都是strong參照的話,兩個對象都無法釋放,常見于deleage聲明為strong,實際應(yīng)該用assign。還有就是block中使用了當(dāng)前對象,實際應(yīng)該把當(dāng)前對象復(fù)制給一個局部變量然后用__block修飾。

.死循環(huán)問題

比如如果某個ViewController中有無限循環(huán),也會導(dǎo)致即使ViewController對應(yīng)的view關(guān)掉了,ViewController也不能被釋放,這種問題常發(fā)生于animation處理。

.循環(huán)引用的基本上有三個常見場景:
.定時器(一方面,NSTimer經(jīng)常會被作為某個類的成員變量,而NSTimer初始化時要指定self為target,容易造成循環(huán)引用。 另一方面,若timer一直處于validate的狀態(tài),則其引用計數(shù)將始終大于0。)
.block(引用當(dāng)前對象)
.代理(assign)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Cocoa內(nèi)存管理機制 (1)當(dāng)你使用new、alloc、copy方法創(chuàng)建一個對象時,該對象的保留計數(shù)器值為1.當(dāng)...
    John_LS閱讀 2,879評論 0 6
  • 內(nèi)存管理 簡述OC中內(nèi)存管理機制。與retain配對使用的方法是dealloc還是release,為什么?需要與a...
    丶逐漸閱讀 2,086評論 1 16
  • 11.看下面的程序,第一個NSLog會輸出什么?這時str的retainCount是多少?第二個和第三個呢? 為什...
    AlanGe閱讀 846評論 1 4
  • 序言 目前形勢,參加到iOS隊伍的人是越來越多,甚至已經(jīng)到供過于求了。今年,找過工作人可能會更深刻地體會到今年的就...
    獨酌丿紅顏閱讀 2,472評論 18 60
  • 前言 內(nèi)存泄露是一個相對挺嚴重的問題,可是它的存在未引起足夠的重視,如果程序運行時一直分配內(nèi)存而不及時釋放無用的內(nèi)...
    進無盡閱讀 1,911評論 0 5

友情鏈接更多精彩內(nèi)容