2012-02-29 17 views
0

こんにちはすべて私はRayによって提供されるrssリーダーを使用しています。これは素晴らしいです。アプリケーションは、約7MBのむしろ大きなXMLファイルを解析する必要があります。プロセスは正常に動作し、コンテンツをダウンロードして解析し、データベースに保存することができます。しかし、私はメモリに大きな問題があります。インストゥルメントで動くと30MBくらいまで上がりますが、30-40秒間だけですが、最初の実行時にダウンロードと解析を実行するため、アプリがクラッシュします。GDataXMLDocumentメモリの増加

これについての助けに感謝します。私は信じているコードは、主な問題は発生します

- (void)requestFinished:(ASIHTTPRequest *)request { 


    //////// problem code ///////// 
     NSError *error; 

    GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:[request responseData] 
                 options:0 error:&error]; 
    [_queue addOperationWithBlock:^{ 

    if (doc == nil) { 


    } else { 

     entries = [NSMutableArray array]; 

     [self parseFeed:doc.rootElement entries:entries];     

     [[NSOperationQueue mainQueue] addOperationWithBlock:^{ 

      for (RSSEntry *entry in entries) { 

       int insertIdx = [_allEntries indexForInsertingObject:entry sortedUsingBlock:^(id a, id b) { 
        RSSEntry *entry1 = (RSSEntry *) a; 
        RSSEntry *entry2 = (RSSEntry *) b; 
        return [entry1.articleDate compare:entry2.articleDate]; 


        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
        //... do everything I've done before... 
        [pool drain]; 


       }]; 

       [_allEntries insertObject:entry atIndex:insertIdx]; 

       entries = 0; 

      }        

     }]; 

    } 

     //[doc release]; 
     //doc = nil; 

}]; 

[doc release]; 
doc = nil; 
[error release]; 

} 
+0

多分、他のどこかでメモリリークがあります。 – yoninja

答えて

0

レイWenderlichのサイトでは、advantages of various XML parsersについての記事があります。 GDataXMLパーサには大きなメモリフットプリントがあるようですが、TBXMLのようなものに変更する必要があります。

+0

私はTMXMLを試してみましたが、それでもメモリ使用量は32MBまでです。実際のファイルは7MBしかないので、それがなぜそれほど大きくなるのか理解できません。 SAXパーサを検討する必要がありますか?どんな実際の例も本当に感謝しています。 – mediavu

+0

申し訳ありませんが、TBXMLがDOMパーサーであることに気付きませんでした。あなたはSAXパーサを試してみるべきです。組み込みのもの(NSXMLParser)は使いにくいですが、Big Nerd Ranchサイト(http://weblog.bignerdranch.com/?p=48)のコードを使用して学習しました。私が解析したXMLは約1 MBでしたが、メモリがほとんどないiPhone 3Gで処理しました。私は、DOMパーサーがXML文書をメモリに保持し、同時にそれから多くのオブジェクトを作成するためにメモリが増えると想定しています。オブジェクトはXML表現よりも大きい可能性があります。 –

+0

こんにちは、ありがとう、私は見ることができる実際の例がありますか?もう一度あなたに感謝します。 – mediavu

関連する問題