2012-10-19 35 views
3

手動實現@property而不是使用@synthesize時,是否必須包含ARC代碼?手動實現@property

難道是確定實現它是這樣的:

@synthesize var1; 

- (void)setvar1:(NSObject *)newVar1 
{ 
    var1 = newVar1; 
} 

或者你有包括retainrelease等?

回答

2

在ARC下,您不必(並且實際上不能)手動輸入retainrelease變量。根據ARC,您的實施除了需要大寫字母V(setVar1:)外,完全可以接受。

1

當使用ARC,你不能在手動使用retainrelease寫代碼。因此,如果您選擇手動實現屬性獲取器和設置器,並且啓用了ARC,則不必包含額外的內存管理代碼。

1

你所謂的「ARC代碼」(retainrelease等)實際上是手動引用計數,而不是自動的。

如果您正在編譯沒有ARC,則需要retain或根據需要複製對象。如果你在ARC下,編譯器會爲你照顧它。具體而言,如果var1宣佈爲__strong,則編譯器將保留newVar1

相關問題