【发布时间】:2012-08-16 09:35:53
【问题描述】:
请看附上的图片。 如果它在这里不可见是代码
- (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];
}
仍然存在泄漏。
【问题讨论】:
-
你也可以发布委托方法吗?解析调用中的某些内容存在未正确清理的元素。它应该在委托方法内
-
你是对的。我在那里看到一些分配的字符串,它们没有被释放。我将释放它们并再次检查。
标签: iphone ios xcode ipad memory-leaks