以下是關(guān)于內(nèi)存管理的學(xué)習(xí)筆記:引用計(jì)數(shù)與ARC。
iOS5以前自動(dòng)引用計(jì)數(shù)(ARC)是在MacOS X 10.7與iOS 5中引入一項(xiàng)新技術(shù),用于代替之前的手工引用計(jì)數(shù)MRC(Manual Reference Counting)管理Objective-C中的對(duì)象【官方也叫MRR(Manual Retain Release)】。如今,ARC下的iOS項(xiàng)目幾乎把所有內(nèi)存管理事宜都交給編譯器來決定,而開發(fā)者只需專注于業(yè)務(wù)邏輯。
但是,對(duì)于iOS開發(fā)來說,內(nèi)存管理是個(gè)很重要的概念,如果先要寫出內(nèi)存使用效率高而又沒有bug的代碼,就得掌握其內(nèi)存管理模型的細(xì)節(jié)。
一、引用計(jì)數(shù)
1.與內(nèi)存管理的關(guān)系?
在Objective-C內(nèi)存管理中,每個(gè)對(duì)象都有屬于自己的計(jì)數(shù)器:如果想讓某個(gè)對(duì)象繼續(xù)存活(例如想對(duì)該對(duì)象進(jìn)行引用),就遞增它的引用計(jì)數(shù);當(dāng)用完它之后,就遞減該計(jì)數(shù);當(dāng)沒人引用該對(duì)象,它的計(jì)數(shù)變?yōu)?之后,系統(tǒng)就把它銷毀。
這個(gè),就是引用計(jì)數(shù)在其中充當(dāng)?shù)慕巧河糜诒硎井?dāng)前有多少個(gè)對(duì)象想令此對(duì)象繼續(xù)存活程序中;