[英]Memory management issue with retain
当您拥有保留在接口中的属性并在代码中的某个位置分配时,是否需要在代码中释放它以及在dealloc方法中释放它,即保留计数为2?
从界面:
NSMutableData *xmlData;
@property (nonatomic, retain) NSMutableData *xmlData;
从实现:
@synthesize xmlData;
- (void)dealloc
{
[xmlData release];
[super dealloc];
}
xmlData = [[NSMutableData alloc] init];
您需要在dealloc中release
它。
如果在设置时需要retain
它,则取决于您如何做。
如果直接执行此操作,则需要保留它:
xmlData = [[NSMutableData alloc] init];
如果使用setter,它将自动完成,因此需要释放它(如果未自动释放):
NSMutableData *data = [[NSMutableData alloc] init];
self.xmlData = data;
[data release];
不知道,但我知道如何找出答案,如果您通过XCode Profiler运行并选择“分配”,它将列出每个对象的计数。
在您的示例中,您只需要在-(void)dealloc;中释放ivar;
我的做法是仅通过Accessor / Mutator(获取器/设置器)访问ivars,因此,当我分配和初始化ivar时,请执行以下操作。
NSMutableData *lXMLData = [[NSMutableData alloc] init];
self.xmlData = lXMLData;
[lXMLData release];
我发现它可以使一切井井有条,平衡
我也看过
self.xmlData = [[[NSMutableData alloc] init] autorelease]
;
(但我不是粉丝)
我的方法...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.