我不知道为什么这个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对象后,仪器仍显示内存泄漏。 我在这里失踪了..
答案 0 :(得分:3)
self.results = [[NSMutableArray alloc] init];
属性获取其指定值的所有权(根据其声明)。因此,您设置此属性的数组由self
保留(我假设该属性为retain
或copy
),但已保留+1的保留计数初始化。
将行更改为:
self.results = [NSMutableArray array];
内存泄漏应该清理。