0

私は1つのアプリケーションを開発しています.xml解析を実行し、400の質問を取得します.これらの質問を取得するために、その質問属性を持つ1つのクラスを作成しました.質問タグが起動すると、そのクラスのオブジェクトを1つ作成し、その属性情報を保存しましたそして、そのクラスに対して didendelement が発生したときに、そのクラス オブジェクトを 1 つの配列に追加しました。このように、すべての質問に対してオブジェクトを作成します。このようにすると、多くのメモリが必要になり、プロセスも遅くなります。これを実行するとバックグラウンドでは同じ時間がかかります.SO少ないメモリでこれを行う方法を教えてください.私の解析コードは次のようになります

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict  
{
    if([elementName isEqualToString:@"question"])
    {
        questions=[[Questions alloc]init];
        questions.content=[attributeDict valueForKey:@"content"];
        questions.id=[attributeDict valueForKey:@"id"];
        questions.answer=[attributeDict valueForKey:@"answers"];
        questions.type=[attributeDict valueForKey:@"type"];
        questions.markertext=[attributeDict valueForKey:@"marker_text"];
        questions.markertop=[attributeDict valueForKey:@"marker_top"];
        questions.markerleft=[attributeDict valueForKey:@"marker_left"];
    }
 }


- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
   [qshns addObject:questions];
}  

ここで、qshns は 1 つの配列です。

4

2 に答える 2

0

XML ファイルを Core Data データストアにコピーします。これにより、メモリをほとんど使用せずに超高速アクセスが可能になります。

于 2012-05-17T13:23:07.940 に答える
0

占有するメモリを少なくする方法は 1 つしかありません。それは、XML クラスを 1 回だけヒットし、それを任意のシングルトン クラスの配列またはデータベースに格納することです。次に、必要な場所で使用します。XMLクラスを何度もヒットしないでください。大量のメモリが占​​有されます。

于 2012-05-17T09:45:24.473 に答える