0

请参阅所附图片。如果它在这里不可见是代码

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

泄漏仍然存在。

在此处输入图像描述

4

1 回答 1

1

尝试使用:

[[NSURLCache sharedURLCache] setMemoryCapacity:0];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
dataParser = [[NSXMLParser alloc] initWithContentsOfURL:URL];

它似乎阻止了人们在这些问题上的泄密:

当我使用与 SeismicXML 示例相同的 NSXMLParser 时出现内存泄漏问题

在这个 Objective-C NSXMLParser 代码中找不到漏洞?

于 2012-08-16T09:41:56.560 回答