iPhone SDK:如何解决这个漏洞?

时间:2011-08-10 18:22:28

标签: iphone ios ios4

  

可能重复:
  iPhone SDK:How can I fix this leakage?

这个问题与前一个问题不同,即使它属于同一类,

我的泄漏如下,

@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];
}

enter image description here

第二个问题:在我写的上面给出的变量中:

self.responseXMLData = [self.lastLoadedResponseXMLData copy];

我是否需要再次发布self.lastLoadedResponseXMLData,而不是在dellaoc中发布?或者只有delloc是多么的? autorelease似乎工作,但没有明白为什么

1 个答案:

答案 0 :(得分:4)

我强烈建议您仔细阅读Apple提供的Memory Management Programming Guide。这将使您更好地了解如何更好地管理您的分配。

-

IMO(不确定其他人会同意),你需要在dealloc中做的只是release你的对象。没有必要将它们设置为零。

您需要释放要复制的对象。当您copy [ 1 ]时,保留计数增加1.然后,当您将其分配给self.responseXMLData时,保留计数再次增加1(因为财产保留)。这里最好的办法就是自动释放它。 [[self.lastLoadedResponseXMLData copy]autorelease];

[ 1 ]最简单的经验法则是,只要您alloccopynewretain,拥有它,你有责任在你取得所有权的范围内发布它。