我想我可能会访问这个错误,也许有人可以指出我正确的方向。
我有一个Entry
实体,它与实体具有一对多的关系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的方式意味着这些项目留在内存中?