请参阅附加的图像。 如果它不是在这里看到的是代码iOS - 活动监视器即使在释放对象后也会显示泄漏
- (void)startParsingData:(NSString *)xmlDataString
{
NSLog(@"parser started");
// allocate NSXMLParser
NSLog(@"XML DATA equals %@", xmlDataString);
NSData* xmlData=[xmlDataString dataUsingEncoding:NSUTF8StringEncoding];
dataParser = [[NSXMLParser alloc] initWithData:xmlData];
// assign delegate to parser
dataParser.delegate = self;
// parse data
[dataParser parse];
// release parser
[dataParser release];
// release data
//[xmlData release];
}
活动监视器显示有泄漏以下行 -
[dataParser parse];
我不明白。为什么?因为我已经发布了这个对象。
编辑:
我改变了方法 -
- (void)startParsingData:(NSString *)xmlDataString
{
NSLog(@"parser started");
// allocate NSXMLParser
NSLog(@"XML DATA equals %@", xmlDataString);
NSData* xmlData=[xmlDataString dataUsingEncoding:NSUTF8StringEncoding];
[[NSURLCache sharedURLCache] setMemoryCapacity:0];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
dataParser = [[NSXMLParser alloc] initWithData:xmlData];
// assign delegate to parser
dataParser.delegate = self;
// parse data
[dataParser parse];
// release parser
[dataParser release];
// release data
//[xmlData release];
}
仍泄漏是存在的。
您可以发布委托方法还有吗?调用内部的某些内容会解析出没有被正确清理的元素。它应该在委托方法 – 2012-08-16 10:02:11
内你是对的。我看到一些分配的字符串,这些字符串没有被释放。我会释放他们并再次检查。 – 2012-08-17 05:19:31