可能重複:
How do i avoid running out of memory when performing a task on every item of core data?如何避免在創建/刪除大量新的核心數據項時耗盡內存?
我貼this,其中有一個類似的標題,但它是一個不同的問題。爲了避免在同一問題中提出兩個問題時出現混淆,我單獨發佈了這些信息。
我想要做的是將大量數據添加到核心數據存儲,而不會耗盡內存。這裏是我目前的代碼:
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++;
}
但是,這經歷了一定量的數據後,內存不足。這也會發生,如果我只是採取第一個'結果',並沒有通過整個數組,所以內存不足似乎不是通過結果的結果。
如何在不耗盡內存的情況下做到這一點?
注意的是,上述代碼不能編譯,因爲你在同一個塊聲明'entry'兩次。 –