在IPhone上使用NSXMLParser进行内存泄漏

时间:2010-11-08 22:14:20

标签: iphone memory-leaks nsxmlparser nsmutablestring

下面是我的代码,Leaks说我在NSMutableString alloc方法中遇到内存泄漏。我确信这是我忽略的事情,让我知道是否有人有任何想法。谢谢!


-(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;

}

-Agent是在初始化类时创建的自定义对象。 XML有效并具有所有适当的开始/结束标记。

1 个答案:

答案 0 :(得分:1)

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

对象的创建者得到泄漏的“信用”,即使额外的保留在其他地方。

换句话说,在代理商:

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