Objective-C內存管理機制
Objective-C中的對象都是基于引用計數(shù)來管理生命周期的。簡單來說就是绿店,我們在需要持有一個對象時,調用retain讓它的引用計數(shù)+1庐橙。不需要這個對象的時候假勿,調用release讓它的引用計數(shù)-1。當一個對象引用計數(shù)為0的時候态鳖,這個對象就會被自動銷毀转培。
MRC
我們在手動管理引用計數(shù)的時候,要明確地控制對象的生命周期浆竭,顯式的調用每一個retain和release浸须。我們必須清楚的了解每個接口對引用計數(shù)的處理(如把一個對象放到數(shù)組里引用計數(shù)會被+1惨寿,用alloc創(chuàng)建的對象的引用計數(shù)一開始就是1,用哪些接口創(chuàng)建的對象是已經被調用過autorelease的等等)删窒。在處理引用計數(shù)時稍有疏忽裂垦,就可能導致程序崩潰或內存泄漏。
ARC
ARC是編譯器通過對代碼的靜態(tài)分析肌索,確定對象的生命周期蕉拢,并在合適的位置自動加上retain和release的機制。把內存管理交給編譯器以后驶社,我們不需要再調用任何的retain和release了。ARC減少了MRC帶來的思考負擔测萎,減少了內存問題出現(xiàn)的可能性亡电,也大幅減少了代碼量。
擴展閱讀:iOS 內存管理&其他常見內存管理算法