簡體   English   中英

Objective-C成員初始化自動釋放的對象

[英]Objective-C member initializiation of autoreleased objects

嘿所以,如果我有一些屬性,如

@interface MyClass {
   NSArray* myArray;
}
@end

@property (retain, nonatomic) NSArray* myArray;

在我的init方法中我應該做些什么

myArray = [[NSArray array] retain];

要么

self.myArray = [NSArray array];

我認為前者會更受歡迎,因為更清楚的是發生了什么? 我想另一種表達它的方法應該是,你應該在實現中與成員的屬性進行交互還是嚴格使用成員本身?

第一個是首選,因為如果你通過訪問器它可以觸發KVO通知,如果您的子類是對象,這可能會導致奇怪的問題。

除了維護OOP范例之外,設置器的一個重點是正確釋放先前保留的值。 由於你處於初始化狀態,因此通常可以假設沒有現有值,所以你不會因為使用setter而獲得任何好處。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM