クラッシュするメモリの問題があります。私は辞書の配列をループしていて、その中で私が作成したキー配列をループします。そのキー配列の各キーを使用して、そのキーの値を辞書に取得します。次に、値を追加して文字列を作成します。この文字列には大量のデータが含まれます。iPhone:ループでNSStringを作成するときにメモリが膨大になる
私もARCを使用しているため、手動ではリリースできません。
メモリスパイクはstringByAppendingFormat行で発生します。
NSString *theString = [[NSString alloc] init];
for (NSMutableDictionary *aDict in collectionArray)
{
for (NSString *key in itemKeys)
{
NSString *valueString = [aDict valueForKey:key];
// Memory spikes here
theString = [theString stringByAppendingFormat:@"%@,", valueString];
}
}
aDict辞書とitemKeys配列にはいくつのエントリがありますか? – ThomasW
あなたは 'theString'を漏らしています。何度も何度も繰り返します。 –
おそらくNSMutableString(https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableString_Class/Reference/Reference.html#//apple_ref/occ/instm/NSMutableString/)これにはもっと適しています。 appendStringを使うことができます。事前に必要なバッファ容量を事前に計算することもできます – Ben