因此,当我尝试在我的一个视图控制器中检索我的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,并将本教程的代码转换为ARC。
我真的似乎无法解决这个问题。
编辑:这是崩溃的地方http://i.imgur.com/1yOS7TM.png
您似乎在这里有一个无限循环:
- (NSManagedObjectContext *) managedObjectContext {
if (self.managedObjectContext != nil) {
return self.managedObjectContext;
}
self.managedObjectContext
转换为[self managedObjectContext]
您刚刚输入的方法。因此,您要一遍又一遍地调用访问器。
您没有正确复制该示例。
其次,您确实应该使用依赖注入,而不是像单例一样对待App Delegate。我强烈建议您研究DI并采用该设计模式。以后将为您节省很多痛苦。
它在哪里崩溃?哪行代码?是self.managedObjectContext = appDelegate.managedObjectContext;
还是其他地方?Xcode中的断点触发位置在哪里?如果在该行的代码发射,而不是内部的的-managedObjectContext
方法,那么你有一个问题,您的应用程序委托(这应该是不可能的)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句