注意:由于票数太多,这个问题已完全重组。
我正在使用带有核心数据的NSFetchedResults显示UITableViewController。 它显示正常,但是当我按下一个新的视图控制器并且用户使用后退按钮导航回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;
}
答案 0 :(得分:3)
您可以从Xcode复制/粘贴实际错误吗?并且发生崩溃的地方的回溯,如果有的话?
你绝对不应该autorelease
+imageNamed:
返回的对象;该对象已经自动释放。
您的评论:
iVacationTimeApp [47892:19d03] - [CFString respondsToSelector:]:发送到解除分配的实例0x95c9140的消息
有你的答案。你有一个过度发布的对象。可能是image
,可能是别的。打开仪器中的Zombie检测并再次运行。