Automatic Reference Counting,自動(dòng)引用計(jì)數(shù),iOS5引入宵蕉,用以解決手動(dòng)內(nèi)存管理問題。
ARC的特點(diǎn)
ARC是編譯器(時(shí))特性节榜,而不是運(yùn)行時(shí)特性羡玛,更不是垃圾回收器(GC)。
Automatic Reference Counting (ARC) is a compiler-level feature that simplifies the process of managing object lifetimes (memory management) in Cocoa applications.
在對象被創(chuàng)建時(shí) retain count +1宗苍,在對象被release時(shí) retain count -1.當(dāng)retain count 為0 時(shí)稼稿,銷毀對象薄榛。程序中加入autoreleasepool的對象會(huì)由系統(tǒng)自動(dòng)加上autorelease方法,如果該對象引用計(jì)數(shù)為0渺杉,則銷毀蛇数。
ARC的修飾符
ARC提供了4種修飾符:
__strong, __weak, __autoreleasing, __unsafe_unretained
assign適用于基本數(shù)據(jù)類型,weak是適用于NSObject對象是越,并且是一個(gè)弱引用耳舅。assign其實(shí)也可以用來修飾對象,那么我們?yōu)槭裁床挥盟匾衅溃恳驗(yàn)楸籥ssign修飾的對象在釋放之后浦徊,指針的地址還是存在的,也就是說指針并沒有被置為nil天梧。如果在后續(xù)的內(nèi)存分配中盔性,剛好分到了這塊地址,程序就會(huì)崩潰掉呢岗。而weak修飾的對象在釋放之后冕香,指針地址會(huì)被置為nil。所以現(xiàn)在一般弱引用就是用weak后豫。
strong是強(qiáng)引用悉尾,被引用一次引用計(jì)數(shù)會(huì)+1,當(dāng)引用計(jì)數(shù)為0挫酿,銷毀對象构眯。