手動實現@property而不是使用@synthesize時,是否必須包含ARC代碼?手動實現@property
難道是確定實現它是這樣的:
@synthesize var1;
- (void)setvar1:(NSObject *)newVar1
{
var1 = newVar1;
}
或者你有包括retain
,release
等?
手動實現@property而不是使用@synthesize時,是否必須包含ARC代碼?手動實現@property
難道是確定實現它是這樣的:
@synthesize var1;
- (void)setvar1:(NSObject *)newVar1
{
var1 = newVar1;
}
或者你有包括retain
,release
等?
在ARC下,您不必(並且實際上不能)手動輸入retain
或release
變量。根據ARC,您的實施除了需要大寫字母V(setVar1:
)外,完全可以接受。
當使用ARC,你不能在手動使用retain
,release
等寫代碼。因此,如果您選擇手動實現屬性獲取器和設置器,並且啓用了ARC,則不必包含額外的內存管理代碼。
你所謂的「ARC代碼」(retain
,release
等)實際上是手動引用計數,而不是自動的。
如果您正在編譯沒有ARC,則需要retain
或根據需要複製對象。如果你在ARC下,編譯器會爲你照顧它。具體而言,如果var1
宣佈爲__strong
,則編譯器將保留newVar1
。