2010-12-14 41 views
0

我在代碼中使用兩個對象,即pagesUrl和pagesXmlParser,並且在它們使用後,釋放這兩個對象。它運行良好,但它顯示內存泄漏。當我試圖驗證它時,我檢查了這些對象的引用計數,並在對象釋放後顯示'1'。任何人都可以幫助我解決如何刪除泄漏以及如何在下面的代碼中釋放這些特定的對象。iPhone:此代碼中存在內存泄漏?

-(void)loadPagesForChapter:(NSString *)path{ 
// have to parse the pages xml for this chapter 

    NSURL *pagesUrl = [[NSURL alloc] initFileURLWithPath:[self pagesXmlPath:path]]; 

    NSXMLParser *pagesXmlParser = [[NSXMLParser alloc] initWithContentsOfURL:pagesUrl]; 

    PagesAccumulator *pageLoader = [[PagesAccumulator alloc] init]; 
    pagesXmlParser.delegate = pageLoader; 

    [pagesXmlParser parse]; 

// parsing pages done 
// get the pages array 
self.arrayOfPages = pageLoader.arrayOfPages; 

    [pageLoader release]; 
[pagesXmlParser release]; 
[pagesUrl release]; 
NSLog(@"pagesurl retain count is:%d",[pagesUrl retainCount]); 
    NSLog(@"pagesxmlparser retain count is:%d",[pagesXmlParser retainCount]); 
} 

在此先感謝您的幫助。

+1

泄漏在設備或模擬器中 - 如果模擬器泄漏在設備上測試 - 模擬器有時會給您不正確的結果! – deanWombourne 2010-12-14 13:39:15

回答

3

忽略保留計數

僅僅因爲一個對象都有一個保留計數> 0並不意味着它不會自動釋放也:)

您的代碼看起來好像沒什麼問題。

如果確實是泄漏,我會查看您的PageLoader實現,看看是否存在阻止解析器被釋放(這也會導致URL泄漏)的NSXMLParserDelegate方法之一。

+0

感謝您的回覆。它工作很好..非常感謝你... – raj 2010-12-14 14:44:00