0

私は大量のデータ (配列内の30K辞書など) を Web サービス経由で受信するアプリに取り組んでいます。この大量のデータを解析するために JSON キットを使用しています。応答を取得した後、このデータを plist ファイルに保存します (アプリをオフライン モードで実行したいため)。

その後、NSMutableArray ( 30K辞書) を使用してこのデータにアクセスしています。さらに計算するために、この配列を使用し、このループを計算に7〜8回使用して、グラフを描画します。

//path = path from which i access the plist

NSMutableArray *array = [[NSMutableDictionary alloc] initWithContentsOfFile: path];

//where array contains about 30K dictionaries.

for(int i=0; i<[array count]; i++) {

    // some calculation formula
}

上記のループを実行した後、同じループが7〜8回呼び出されます。

メモリの問題により、plist からデータを読み取った後、アプリがクラッシュします。問題を解決するのを手伝ってください。

4

1 に答える 1

0

問題はメモリに関連しているため、できるだけ早くメモリを解放する必要があります。iOS6.0でARCを使用していると思います。@autoreleasepool内のループを使用してみて、違いが生じるかどうかを確認してください。必要に応じて、ネストされた@autoreleasepoolを使用することもできます。

for(int i=0; i<[array count]; i++) {
   @autoreleasepool {
       // calculation formula
    }
}

古い方法;

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
for(int i=0; i<[array count]; i++) {
       // calculation formula
}
[pool drain];
于 2012-10-12T15:43:02.710 に答える