我有一个leakege在这里,但无法找到问题;
@property (nonatomic,retain) NSMutableData *responseXMLData;
@property (nonatomic,copy) NSMutableData *lastLoadedResponseXMLData;
Run Code Online (Sandbox Code Playgroud)

-(void)dealloc {
[doc release];
doc=nil;
[xmlBodyTemp release];
[responseXMLData release] ;
responseXMLData=nil;
[lastLoadedResponseXMLData release];
lastLoadedResponseXMLData=nil;
[xmlBody release];
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
如果没有看到您的dealloc方法,我们无法确定您是否正确地释放了这些属性的值.
但在发布的代码中,我确实看到了一个主要问题.但这不是你想的地方.
self.lastLoadedResponseXMLData = docTempData;
Run Code Online (Sandbox Code Playgroud)
这行虽然被XCode标记,但很好(假设您正确地释放了值dealloc).
self.responseXMLData = [self.lastLoadedResponseXMLData copy];
Run Code Online (Sandbox Code Playgroud)
然而,这条线并不好.它会复制任何值,self.lastLoadedResponseXMLData但您永远不会因复制而释放引用.self.responseXMLData,因为它被声明为"retain",添加它自己对该对象的引用,并且(假设你正确地释放了值dealloc)这个引用是清理过的.
如果你真的不需要关心对象是否相同或是副本,只需放弃副本.否则,自动释放它:
self.responseXMLData = [[self.lastLoadedResponseXMLData copy] autorelease];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |