1、什麼是ARC<span style="font-size:16px; color:rgb(0,0,0)"> ARC是本身主動引用計數。蘋果官方在Xcode4.2及之後版本號中增長的一個內存管理機制,全然代替了程序猿人工的內存管理。使得程序猿僅僅須關心程序自己。使用ARC。編譯器會本身主動在代碼中增長內存管理代碼,是一個編譯器特性。而不是執行時特性,固然,它也和JAVA的垃圾回收不一樣,它的本質和手動的內存管理是同樣的,僅僅是這些代碼編譯器會本身主動增長。下圖是在Xcode中使用ARC:<img src="http://img.blog.csdn.net/20140513211234109?spa
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3FpbnFpYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></span></span></span></div><div style="font-family:Arial; font-size:14px; line-height:22px"></div><div style="font-family:Arial; font-size:14px; line-height:22px"><span style="font-size:24px"><span style="font-size:14px"><span style="font-size:16px"><span style="font-size:24px; color:rgb(255,0,0)">2、ARC的特色<span style="font-size:16px; color:rgb(0,0,0)"> 當咱們使用ARC本身主動引用計數的時候,一些內存管理相關的代碼就不能夠再使用。如:retain,release。autorelease [super dealloc]等等。<img src="http://img.blog.csdn.net/20140513211443546?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3FpbnFpYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /> Xcode本身主動引用計數後,用戶就不能再手動管理內存。</span></span></span></span></span></div><div style="font-family:Arial; font-size:14px; line-height:22px"><span style="font-size:24px"><span style="font-size:14px"><span style="font-size:16px"> </span></span></span><span style="font-size:24px; color:rgb(255,0,0)">3、ARC的原理<span style="font-size:16px; color:rgb(0,0,0)"> ARC的原理很是easy。僅僅要一個oc對象沒有<span style="color:rgb(192,0,0)">強指針</span>指向它,系統就回收,反之僅僅要有<span style="color:rgb(192,0,0)">強指針</span>指向它。就不會被回收。這裏有一個概念:強指針和弱指針。默認狀況下,指針都是強指針,而用weakkeyword聲明的指針就是弱指針。請看這一段代碼:</span></span><p style="margin-top:0px; margin-bottom:0px; line-height:normal; font-size:13px; font-family:Menlo; color:rgb(0,132,0)"></p><pre code_snippet_id="343728" snippet_file_name="blog_20140513_1_3690365" name="code" class="objc" style="font-size: 14px; line-height: 22px;">// // main.m // ARC // // Created by 葬花 橋 on 14-5-13. // Copyright (c) 2014年 itcast. All rights reserved. // #import <Foundation/Foundation.h> #import "Person.h" int main() { Person *p = [[Person alloc] init]; __weak Person *p2 = [[Person alloc] init]; p.name = @"橋"; p2.name = @"小橋"; return 0; }.net