我这里有泄漏,但找不到问题;
@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];
}
答案 0 :(得分:5)
如果没有看到dealloc
方法,我们无法确定您是否正确发布了这些属性的值。
但在发布的代码中,我确实看到了一个主要问题。但这不是你想的地方。
self.lastLoadedResponseXMLData = docTempData;
这一行虽然被XCode标记,但很好(假设您在dealloc
中正确发布了值)。
self.responseXMLData = [self.lastLoadedResponseXMLData copy];
然而,这条线并不好。它会复制self.lastLoadedResponseXMLData
中的任何值,但由于副本,您永远不会释放引用。 self.responseXMLData
,因为它被声明为“retain”,添加了自己对该对象的引用,并且(假设您在dealloc
中正确释放了值)此引用是清理过的。
如果你真的不需要关心对象是否相同或是副本,只需放弃副本。否则,自动释放它:
self.responseXMLData = [[self.lastLoadedResponseXMLData copy] autorelease];