【发布时间】:2014-01-27 16:41:41
【问题描述】:
所以当我尝试在我的一个视图控制器中检索我的 managedObjectContext 时,我收到了 EXC_BAD_ACESS(code=2...) 错误。
这是我的 getter 方法代码:
- (NSManagedObjectContext *) managedObjectContext {
if (self.managedObjectContext != nil) {
return self.managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
self.managedObjectContext = [[NSManagedObjectContext alloc] init];
[self.managedObjectContext setPersistentStoreCoordinator: coordinator];
}
return self.managedObjectContext;
}
这就是我尝试检索 managedObjectContext 的方式
QVAppDelegate *appDelegate = (QVAppDelegate*)[[UIApplication sharedApplication] delegate];
self.managedObjectContext = appDelegate.managedObjectContext;
这是 appDelegate 中的定义
@property (strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
我正在使用 ARC 并将此 tutorial's 代码转换为 ARC。
我似乎真的无法解决这个问题。
编辑:这是崩溃的地方http://i.imgur.com/1yOS7TM.png
【问题讨论】:
-
请提供更多上下文。就目前而言,代码本身不应导致异常,即使它有点“未定义”,因为属性
managedObjectContext也可能返回nil(如果您的persistentStoreCoordinator 是nil。但是,您很可能会得到使用此上下文时在其他地方出现异常:您应该注意使用 线程限制 并发模式返回NSManagedObjectContext时的后果。 -
问题是,即使我删除方法内部的代码并调用它,它仍然会崩溃,所以里面的内容并不重要。调用该方法只会使应用程序崩溃。
-
调试器是你的朋友 ;)
-
调试该代码,检查它在哪里崩溃
-
stackoverflow.com/questions/18963937/… 可能你会在这里找到更好的东西,你的代码看起来不错。
标签: ios cocoa-touch core-data ios7 delegates