Objective-C成员初始化自动释放的对象

Dev*_*Dev 2 iphone memory-management objective-c

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

@interface MyClass {
   NSArray* myArray;
}
@end

@property (retain, nonatomic) NSArray* myArray;
Run Code Online (Sandbox Code Playgroud)

在我的init方法中我应该做些什么

myArray = [[NSArray array] retain];
Run Code Online (Sandbox Code Playgroud)

要么

self.myArray = [NSArray array];
Run Code Online (Sandbox Code Playgroud)

我认为前者会更受欢迎,因为更清楚的是发生了什么?我想另一种表达它的方法应该是,你应该在实现中与成员的属性进行交互还是严格使用成员本身?

Lou*_*arg 8

第一个是首选,因为如果你通过访问器它可以触发KVO通知,如果您的子类是对象,这可能会导致奇怪的问题.