2012-01-17 63 views
0

我不知道爲什麼這個NSXMLParser parse方法泄漏。 我看着其他類似的SO問題,但無法解決它。NSXMLParser解析方法內存泄漏

這是我的代碼。

- (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

運行分析器,轉到Xcode菜單,然後選擇Product-> Analyze。發佈結果。 – NJones 2012-01-17 20:16:08

回答

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

屬性取得所有權(根據他們的聲明)的指定值。所以你設置這個屬性的數組由self保留(我假設這裏的屬性是retaincopy),但是它的初始化已經有一個保留計數+1。

行更改爲:

self.results = [NSMutableArray array]; 

而且內存泄漏應該清理。

+1

我做了上面的改變,但它仍然顯示內存泄漏.. :( – 2012-01-17 19:26:21

+0

這是你的代碼示例中唯一的內存泄漏。其他泄漏必須來自其他代碼。 – 2012-01-17 19:54:46

+0

如果你還沒有釋放它,你也在泄漏'imagesArray'在'dealloc'方法中 – murat 2012-01-17 20:16:04