我有一个这样声明的属性:
@property (nonatomic, retain) NSMutableArray *pricingLevels;
我这样分配它:
self.pricingLevels = [[[NSMutableArray alloc] init];
在我的 dealloc 中我有这个:
self.pricinglevels=nil;
当我用 xCode 分析我的代码时,它说我这里有内存泄漏:
self.pricingLevels = [[[NSMutableArray alloc] init];
我应该使用autolrelease
对此,因为self.pricinglevels
还保存对数组的引用?
self.pricingLevels
是一个声明为的属性retained
这意味着每次您通过属性分配(点语法或方法)设置它时,该对象都会自动为您保留该对象。
self.pricingLevels = [NSMutableArray array];
[self setPricingLevels:[NSMutableArray array]];
上面的代码将执行相同的操作并自动保留传递的数组。这就是幕后发生的事情(或类似的事情)。该方法被调用:
- (void)setPricingLevels:(NSMutableArray *)a {
if(_pricingLevels != a) {
[_pricingLevels release];
_pricingLevels = [a retain];
}
}
你看?自动保留,而之前的值自动释放。
EDIT 回答你的最后一个问题:是的,你应该打电话autorelease
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)