![](/img/trans.png)
[英]Objective-C: Is an autoreleased initialisation followed by a retain wrong in a constructor?
[英]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.