注:この質問は、反対票が非常に多いため、完全に再編成されました。
コアデータで NSFetchedResults を使用して UITableViewController を表示しています。正常に表示されますが、新しいView Controllerをプッシュし、ユーザーが戻るボタンを使用して UITableView に戻ると、そのエラーでクラッシュします。
私はこれと何週間も戦ってきましたが、その理由がわかりません。メモリ管理に関連している可能性が高いと言えますが、どこにも見つかりません。
更新: Instruments-Zombies を使用すると、実際には CoreData でクラッシュしていることがわかった - prepareResultsForResultsSet
。画像を見る
ここに私の FetchedResultsController からのコードがあります
- (NSFetchedResultsController *)fetchedResultsController {
NSManagedObjectContext *thecontext;
thecontext = [(Logix_AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
if (fetchedResultsController != nil) {
return fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"TimeOff" inManagedObjectContext:thecontext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"timeOffStartDate" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:thecontext sectionNameKeyPath: @"timeOffType" cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
fetchedResultsController.delegate = self;
[sort release];
[fetchRequest release];
[theFetchedResultsController release];
return fetchedResultsController;
}