这个问题可以在别处回答,但我还没有看到。 我现在已经两次阅读了“内存管理指南”,但仍然对此感到疑惑。
想象一下,我创建了一个像这样的实例变量......
@interface
@property(nonatomic,retain)NSArray *myArray;
@end
现在也想象我在班上的某处使用访问器来获取或设置myArray。
例如
NSArray* arrayInit = [[NSArray alloc]initWithObjects:@"1",@"2",nil];
self.myArray = arrayInit;
[arrayInit release];
通过使用访问器方法,我将myArray的保留计数增加了1?
我的典型dealloc方法如下所示:
-(void)dealloc{
[myArray release];
[super dealloc];
}
一个相关的问题是我在与“myArray”交互时应该始终使用访问者。 总是写self.myArray.count是明智的吗?
答案 0 :(得分:0)
你的第一个问题的答案是肯定的。
在存在时使用访问器通常更好,所以再次使用YES。请注意,调用访问者可能会产生副作用,具体取决于它是否为自定义,或者是否为该成员设置了KVO。因此,直接在成员上调用release或通过访问器将其设置为nil会导致您应该注意不同的结果。
答案 1 :(得分:0)
我写了很多关于此问题的问题,并在此处获得了一些优秀的答案:iPhone memory management (with specific examples/questions)
希望这有帮助!