这个问题与前一个问题不同,即使它属于同一类,
我的泄漏如下,
@property (nonatomic,retain) NSMutableData *responseXMLData;
@property (nonatomic,copy) NSMutableData *lastLoadedResponseXMLData;
-(void)dealloc {
[doc release];
doc=nil;
[xmlBodyTemp release];
[responseXMLData release] ;
responseXMLData=nil;
[lastLoadedResponseXMLData release];
lastLoadedResponseXMLData=nil;
[xmlBody release];
[super dealloc];
}
第二个问题:在我写的上面给出的变量中:
self.responseXMLData = [self.lastLoadedResponseXMLData copy];
我是否需要再次发布self.lastLoadedResponseXMLData,而不是在dellaoc中发布?或者只有delloc是多么的? autorelease似乎工作,但没有明白为什么
答案 0 :(得分:4)
我强烈建议您仔细阅读Apple提供的Memory Management Programming Guide。这将使您更好地了解如何更好地管理您的分配。
-
IMO(不确定其他人会同意),你需要在dealloc中做的只是release
你的对象。没有必要将它们设置为零。
您需要释放要复制的对象。当您copy
[ 1 ]时,保留计数增加1.然后,当您将其分配给self.responseXMLData
时,保留计数再次增加1(因为财产保留)。这里最好的办法就是自动释放它。 [[self.lastLoadedResponseXMLData copy]autorelease];
[ 1 ]最简单的经验法则是,只要您alloc
,copy
,new
或retain
,拥有它,你有责任在你取得所有权的范围内发布它。