嘿,如果我有一些属性,如
@interface MyClass {
NSArray* myArray;
}
@end
@property (retain, nonatomic) NSArray* myArray;
在我的init方法中,我应该做类似
的事情myArray = [[NSArray array] retain];
或者
self.myArray = [NSArray array];
我认为前者会更受欢迎,因为更清楚的是发生了什么?如果你在实现中与成员的属性进行交互或者严格使用成员本身,我想另一种表达它的方法应该是?
答案 0 :(得分:8)
第一个是首选的,因为如果你通过访问器,它可以触发KVO通知,如果您的子类是对象,这可能会导致奇怪的问题。
答案 1 :(得分:1)
除了维护OOP范例之外,设置器的一个重点是正确释放先前保留的值。由于你处于初始阶段,因此通常可以假设没有现有值,所以你不会因为使用setter而获得任何收益。