Objective c (保留)存取器如何工作?
这个问题可能在别处有答案,但我还没有看到。 我已经读了两遍《内存管理指南》,仍然对此感到好奇 假设我创建了一个这样的实例变量Objective c (保留)存取器如何工作?,objective-c,memory-management,accessor,Objective C,Memory Management,Accessor,这个问题可能在别处有答案,但我还没有看到。 我已经读了两遍《内存管理指南》,仍然对此感到好奇 假设我创建了一个这样的实例变量 @interface @property(nonatomic,retain)NSArray *myArray; @end 现在再想象一下,我使用类中某个地方的访问器获取或设置myArray 比如说 NSArray* arrayInit = [[NSArray alloc]initWithObjects:@"1",@"2",nil]; self.myArray = a
@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是否明智?第一个问题的答案是肯定的
当访问器存在时,通常最好使用访问器,所以请再说一遍。请注意,调用访问器可能会产生副作用,这取决于它是自定义的,还是为该成员设置了KVO。因此,直接在成员上调用release或通过访问器将其设置为nil可能会导致不同的结果,您应该知道。我写了一个关于这方面的问题,并在这里得到了一些很好的答案:
希望这有帮助 所以每次你使用retain访问器时,你必须在你使用完它后释放它?