Iphone 使用类成员的内存泄漏

Iphone 使用类成员的内存泄漏,iphone,objective-c,web-services,memory-leaks,Iphone,Objective C,Web Services,Memory Leaks,连接到Web服务时,我使用名为“soapResults”的类成员。我使用解析器解析xml结果(它是web服务内部的json结果) 现在soapResults是一个retain成员,在dealloc中发布。我试图在连接失败/通过时释放此消息,但没有成功。我也试着根本不分配它,但结果却是空的。。。。任何帮助都将受到感谢 编辑: 我还发现解析器中存在内存泄漏: -(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *)strin

连接到Web服务时,我使用名为“soapResults”的类成员。我使用解析器解析xml结果(它是web服务内部的json结果)

现在soapResults是一个retain成员,在dealloc中发布。我试图在连接失败/通过时释放此消息,但没有成功。我也试着根本不分配它,但结果却是空的。。。。任何帮助都将受到感谢

编辑: 我还发现解析器中存在内存泄漏:

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

您可以alloc
soapResults=[[NSMutableString alloc]init]在这里,但我没有看到任何版本。

如果soapResults是一个retain属性,您应该更改

soapResults = [[NSMutableString alloc] init];  


这将释放旧值并保留新值,从而避免泄漏。

我将代码更改为
self.soapResults=[NSMutableString]并且内存泄漏仍然存在…如果您在代码中的任何其他位置更改soapResults,您还应该使用self.soapResults访问器。此外,如果希望在元素结束时记住字符串,则应使用可变字符串创建一个新字符串(NSString*s=[NSString stringWithString:soapResults]),以便在清空下一个元素的NSMutableString之前复制数据。
soapResults = [[NSMutableString alloc] init];  
self.soapResults = [NSMutableString string];