私はこれに間違ってアクセスしている可能性があると思います.おそらく誰かが私を正しい方向に向けることができます.
Entry
エンティティと 1 対多の関係を持つエンティティがありMedia
ます。Media エンティティには、 というデータ属性が含まれていますoriginalImage
。
これが繰り返される最初の 50 個のエンティティには、セットに項目がEntry
ありません。media
その後、originalImage
属性にアクセスするにつれて速度が低下し、最終的にメモリ不足になり、NSLog の以前のメモリ警告以外のメッセージなしでホーム画面に戻ります。これをInstrumentsで実行すると、この時点でメモリが不足していることも示されます。これが私のコードです:
NSFetchRequest *oldFetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *oldEntryEntity = [NSEntityDescription entityForName:@"Entry"
inManagedObjectContext:oldMOC];
[oldFetchRequest setEntity:oldEntryEntity];
[oldFetchRequest setFetchBatchSize:10];
NSArray *entrys = [oldMOC executeFetchRequest:oldFetchRequest error:nil];
for (NSInteger index = 0; index < entrys.count; ++index) {
Entry *entry = [entrys objectAtIndex:index];
NSOrderedSet *oldMediaSet = [entry valueForKey:@"media"];
for (Media *media in oldMediaSet) {
@autorelease {
[media valueForKey:@"originalImage"];
}
}
}
その originalImage 行を削除すると、クラッシュしないことを意味します。これが、アクセスされていることに関連していると思わせる理由です。おそらく、orderedSet を取得する方法は、これらのアイテムがメモリに残ることを意味するのでしょうか?