-1

注意:由于反对票太多,这个问题已经完全重新组织。

我正在使用带有核心数据的 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;    
}
4

1 回答 1

3

您可以从 Xcode 复制/粘贴实际错误吗?以及坠机发生地点的回溯(如果有的话)?

您绝对不应该使用;autorelease返回的对象。+imageNamed:该对象已经自动释放。


你的评论:

iVacationTimeApp[47892:19d03] -[CFString respondsToSelector:]:消息发送到已释放实例 0x95c9140

有你的答案。你有一个过度释放的对象。可能是image,可能是别的东西。在 Instruments 中打开 Zombie detection 并再次运行。

于 2013-05-24T05:33:11.140 回答