使用类成员的内存泄漏



我使用一个名为"soapResults"的类成员连接到一个web服务。我使用解析器来解析xml结果(它是web服务中的json结果)。

- (void) parser:(NSXMLParser *) parser
         didStartElement:(NSString *) elementName
         namespaceURI:(NSString *) namespaceURI
         qualifiedName:(NSString *) qName
         attributes:(NSDictionary *) attributeDict {
NSString *attName = [[NSString alloc]initWithFormat:@"%@Result",methodName];
if ([elementName isEqualToString:attName]) {        
    if (!soapResults) {         
        soapResults = [[NSMutableString alloc] init];   
    }       
    elementFound = YES;     
}
[attName release];
}   

现在soapResults是一个retain成员并在dealloc中释放。我试图在连接失败/通过时释放这个,但没有成功。我也试着不分配它,但后来我得到空结果....如有任何帮助,不胜感激

编辑:解析器内部也有内存泄漏:

-(void)parser:(NSXMLParser *) parser 
foundCharacters:(NSString *)string {    
    if (elementFound) {
        [soapResults appendString: string];//Memory leak here
    }
}

如果soapResults是保留属性,您应该更改

soapResults = [[NSMutableString alloc] init];  

self.soapResults = [NSMutableString string]; 

释放旧值并保留新值,避免泄漏。

您在这里分配了soapResults = [[NSMutableString alloc] init];,但我没有看到任何释放

最新更新