2011-12-26 73 views
0

我開始使用Xcode 4.2,看起來你不能再像以前那樣使用dealloc和release了。 如果我寫了下面的實現:XCode 4.2和dealloc過時

@implementation Person 

@synthesize firstName; 
@synthesize lastName; 

- (void) dealloc 
{ 
    [firstName release]; 
    [lastName release]; 
    [super dealloc]; 
} 

編譯困擾我說的釋放是在自動引用計數模式下不可用。它是Objective-C 2.0的一個特性嗎?我可以在哪裏閱讀更多內容?

+0

是的,它是Xcode 4中引入的Obj-C 2.0的一個新特性。 – BoltClock 2011-12-26 19:44:02

+6

說明:Obj-C 2.0早在ARC之前就已經出現了,ARC是Xcode 4.2附帶的LLVM3編譯器的一個特性。它在Xcode 4.0或4.1中不可用。 – 2011-12-26 19:52:18

回答

5

這實際上是Automatic Reference Counting(ARC)的一個特徵。如果關閉ARC,則可以使用手動內存管理或(僅限Mac OS X)垃圾回收。

+0

聽起來好像ARC是自身的一個特徵:P – BoltClock 2011-12-26 19:47:03

+0

感謝您的澄清,此時我會看看ARC。 – Raffaeu 2011-12-26 19:55:55

3

在ARC中,您不需要使用release或autorelease,編譯器會爲您完成所有工作。在Apple開發人員網站上快速搜索,發現release notes

+1

在他回來說他的CF代碼泄漏之前:你不能爲Cocoa對象使用'retain','release'或'autorelease'。您仍然需要爲CoreFoundation對象使用內存管理函數,並且在從Cocoa/CoreFoundation執行/從Cocoa/CoreFoundation執行時需要使用宏,以便編譯器知道它是否對管理這些流行對象的內存負責。 – Abizern 2012-01-02 17:55:15

0

如何使用需要兼容ARC和非ARC的庫代碼? 我們是否被迫編寫了兩個版本的相同代碼,其中唯一的區別是刪除的dealloc方法?