早在iOS5.0的時候蘋果就引入了ARC的自動管理機制凛俱,剛出來的時候获雕,ARC模式還不是很健全世分,會存在內(nèi)存泄漏問題聋丝,但是現(xiàn)在的ARC已經(jīng)基本取代了MRC的管理方式索烹,所以我們只需要了解一下MRC,知道ARC的原理即可弱睦。
<h5>1.簡單介紹一下@property屬性修飾</h5>
1.weak:
1>修飾弱引用的OC對象
2.assign:
1>修飾弱引用的OC對象
2>修飾基本數(shù)據(jù)類型
3.strong
1>修飾強引用的OC對象
4.copy
1>修飾NSString類型
2>修飾block
5.使用weak和assign修飾OC對象的區(qū)別
1>成員變量
1)weak生成的成員變量是用__weak修飾的
2)assign生成的成員變量是用__unsafe_unretained修飾的
2>__weak和__unsafe_unretained
1)都不是強指針(不是強引用)百姓,不能保住對象的命
2)__weak : 所指向的對象銷毀后,會自動變成nil指針(空指針)况木,不再指向已經(jīng)銷毀的對象
3)__unsafe_unretained : 所指向的對象銷毀后垒拢,仍舊指向已經(jīng)銷毀的對象
<h5>2.野指針的查找</h5>
在iOS工程中有時會碰到“EXC_BAD_ACCESS”的錯誤提示
因為只知道錯誤的地方,不知道具體crash的原因火惊,所以很難查找求类,這時最好開啟僵尸對象模式(開啟僵尸對象會讓程序的編譯時間延長,所以一般不打開)
這時再次運行程序矗晃,crash時仑嗅,會打印出更多的日志信息
2012-11-28 13:22:08.911 PropMemFun[2132:11303] *** -[CFString respondsToSelector:]: message sent to deallocated instance 0x713ebc0
<h5>3.靜態(tài)內(nèi)存泄漏檢測</h5>
當APP完成之后,要查看內(nèi)存是否存在泄漏問題张症。使用Xcode的Analyze就可以分析出哪里存在內(nèi)存泄漏
根據(jù)描述信息來修改內(nèi)存泄漏
<h5>4.動態(tài)內(nèi)存泄漏檢測</h5>
靜態(tài)內(nèi)存分析泄漏有時可能不能把所有的內(nèi)存泄漏查出來仓技,但是動態(tài)檢測定位代碼不太準確
出現(xiàn)紅色的格子則代表內(nèi)存泄漏
下面就是最重要的定位了
1.模式改選為"Call Tree"模式
2.設(shè)置中改為如下設(shè)置,來顯示內(nèi)存泄漏的代碼
3.雙擊代碼就會顯示出泄漏的代碼(ps:這個定位不是太準確)