可能重复:
在对每个核心数据项执行任务时,如何避免内存不足?
我发布了这个,它有一个类似的标题,但是是另一回事。我单独发布了这个,以避免在同一个问题中提出 2 个问题时造成混淆。
我想做的是将大量数据添加到核心数据存储中而不会耗尽内存。这是我目前拥有的代码:
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Entry"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(version == %@)", @"1.0"];
[request setPredicate:predicate];
NSArray *results = [[AppDelegate applicationDelegate].managedObjectContext executeFetchRequest:request error:nil];
int i = 0;
while (i < results.count) {
Entry *entry = [results objectAtIndex:i];
entry.version = @"1.1";
Entry *entry = [NSEntityDescription insertNewObjectForEntityForName:@"Entry"
inManagedObjectContext:[AppDelegate applicationDelegate].managedObjectContext];
entry.version = existingEntry.version;
[[AppDelegate applicationDelegate].managedObjectContext deleteObject:entry];
i++;
}
但这在经过一定数量的数据后会耗尽内存。如果我只取第一个“结果”并且不遍历整个数组,也会发生这种情况,因此内存不足似乎不是遍历结果的结果。
我怎样才能做到这一点而不会耗尽内存?