나는 이것과 관련된 여러 가지 질문에 대해 비슷한 질문을 올렸지 만 지금은 약 1 주일 동안 아무런 노력을하지 않고 있습니다. 모든 것은이 코드까지 제공 :NSFetchRequest 메모리 문제
NSFetchRequest *oldFetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *oldEntryEntity = [NSEntityDescription entityForName:@"Media"
inManagedObjectContext:oldContext];
[oldFetchRequest setEntity:oldEntryEntity];
[oldFetchRequest setFetchBatchSize:10];
NSArray *medias = [oldContext executeFetchRequest:oldFetchRequest error:&error];
int i = 0;
int count = [oldContext countForFetchRequest:oldFetchRequest error:nil];
NSLog(@"count: %i", count);
while (i < count) {
@autoreleasepool {
NSManagedObject *media = [medias objectAtIndex:i];
[oldContext refreshObject:media mergeChanges:NO];
NSLog(@"i: %i", i);
i++;
}
}
개수는 약 250, media
항목의 금액에 도달해야한다. 앱에 메모리가 부족하여 충돌이 발생하기 전에는 실제로 약 100에 도달합니다. 이 코드가 실행될 때마다 더 많은 메모리가 생성됩니다. 아마도 각각의 media
에는 큰 NSData 속성이 포함되어 있기 때문입니다. 인스트루먼트는 코드가 실행될 때마다 메모리가 증가하는 것을 보여줍니다.
@autoreleasepool
및 이 문제를 해결하기 위해 추가되었지만 작동하지 않았습니다.
표준 마이그레이션이 대규모 데이터에서 작동하지 않으므로이 저장소의 모든 항목을 수동으로 새 항목으로 옮기려고합니다. 이것이 출발점입니다.
은 마이그레이션하지 않고 코드가 다운되는 이유는 무엇입니까? 이 목록에있는 그대로? – NeverBe
예, 이전 코드가 모두 제거되었습니다. 우리가 남긴 모든 코드는 위의 코드입니다. 나는 어떤 코드도 숨기지 않았다. – Andrew
http://stackoverflow.com/questions/12295415/core-data-memory-usage-and-memory-warning LombaX 솔루션을 참조하십시오. 도움이 될 수도 있습니다. – NeverBe