2010-11-08 44 views
0

下面是我的代码,泄漏说我得到一个NSMutableString alloc方法周围的内存泄漏。我相信这是我简单忽略的,让我知道如果有人有任何想法。谢谢!内存泄漏与IPX上的NSXMLParser


-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 

    if (!currentValue) { 
     currentValue = [[NSMutableString alloc] initWithCapacity:[string length]]; 
    } 

    [currentValue setString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]]; 

} 

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ 

    if([elementName isEqualToString:@"phone"]){ 

     currentAgent.phone = currentValue; 
    } 

    [currentValue release]; 

    currentValue = nil; 

} 

智能体是当类被初始化时创建的自定义对象。 XML是有效的,并具有所有适当的开始/结束标签。

回答

1

查看此代码,我认为您的Agent类更可能泄漏电话。假设代理使用retain作为手机媒体资源,这会导致手机持续时间超过其应有的时间。

即使额外的保留位于其他位置,对象的创建者也会因泄漏而“记入”。

换句话说,在代理:

- (void)dealloc { 
    self.phone = nil; 
    // anything else you need to do 
    [super dealloc]; 
} 
+0

非常感谢史蒂芬,我知道这是什么,我只是忽视。看起来,我的代理类dealloc有释放所有属性接受电话之一。我修改了,泄漏似乎得到了解决。谢谢! – DerekH 2010-11-09 15:32:42

+0

不客气。我已经达到了我真正喜欢记忆问题的地步。 :) – 2010-11-09 18:02:43