2010-12-14 9 views
0

コードでpagesUrlとpagesXmlParserという2つのオブジェクトを使用していますが、使用後にこれら2つのオブジェクトを解放しています。その実行中の井戸がメモリリークでそれらを示しています。私はそれを検証しようとしたとき、私はそれらのオブジェクトの参照カウントをチェックし、そのオブジェクトが解放された後でも '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

答えて

3

がカウント

を保持無視するオブジェクトは、それはまた、自動解放いないこと:)

あなたのコードは、私には正常に見えるという意味ではありません保持カウント> 0を持っているという理由だけで。

実際にリークが発生した場合は、PageLoaderの実装を見て、NSXMLParserDelegateメソッドの1つにパーザが解放されるのを防ぐ(URLがリークする原因になる)かどうかを確認します。

+0

あなたのお返事ありがとうございます。それは歓迎した..ありがとうございます... – raj

関連する問題