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

我有一个leakege在这里,但无法找到问题;

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

如果没有看到dealloc方法,我们无法确定您是否正确地释放了这些属性的值。

但在发布的代码中,我确实看到了一个主要问题。 但这不是你想的地方。

 self.lastLoadedResponseXMLData = docTempData; 

这行虽然被XCode标记,但很好(假设您在dealloc正确释放了值)。

 self.responseXMLData = [self.lastLoadedResponseXMLData copy]; 

然而,这条线并不好。 它复制了self.lastLoadedResponseXMLData的任何值,但由于复制,您永远不会释放引用。 self.responseXMLData ,因为它被声明为“retain”,它将自己的引用添加到对象中,并且(假设你在dealloc正确释放了值)这个引用是清理过的。

如果您真的不需要关心对象是否相同或是副本,只需放弃副本。 否则,自动释放它:

 self.responseXMLData = [[self.lastLoadedResponseXMLData copy] autorelease];