NSXMLParser解析方法内存泄漏

时间:2012-01-17 19:01:39

标签: iphone ios memory-management memory-leaks nsxmlparser

我不知道为什么这个NSXMLParser parse方法正在泄漏。 我查看了另一个类似的SO问题,但无法解决它。

这是我的代码。

 - (void)parseXMLFileAtURL {
self.results = [[NSMutableArray alloc] init];

NSURL *xmlURL = [NSURL URLWithString:@"http://www.dukascopy.com/swiss/video/rss/"];
    NSData *dataXml = [[NSData alloc] initWithContentsOfURL:xmlURL];
NSXMLParser *MyrssParser = [[NSXMLParser alloc] initWithData:dataXml];
[dataXml release];

[MyrssParser setDelegate:self];


[MyrssParser setShouldProcessNamespaces:NO];
[MyrssParser setShouldReportNamespacePrefixes:NO];
[MyrssParser setShouldResolveExternalEntities:NO];

[MyrssParser parse]; // memory leak here
MyrssParser.delegate=nil;
[MyrssParser release];
if(!imagesArray)
{
    imagesArray = [[NSMutableArray alloc] initWithCapacity:[self.results count]];
    for(int i=0;i<[results count];i++)
    {
        UIImage *image = [UIImage imageNamed:@"nophoto.png"];
        [imagesArray addObject:image];
        bImgExist[i] = NO;
    }
}

  }

即使在释放我的NSXMLParser对象后,仪器仍显示内存泄漏。 我在这里失踪了..

1 个答案:

答案 0 :(得分:3)

self.results = [[NSMutableArray alloc] init];

属性获取其指定值的所有权(根据其声明)。因此,您设置此属性的数组由self保留(我假设该属性为retaincopy),但已保留+1的保留计数初始化。

将行更改为:

self.results = [NSMutableArray array];

内存泄漏应该清理。