我正在使用 CoreData,我试图将我的 ManagedObjectContext 对象从一个 ViewController 传递到第二个 View Controller。
这是我的第一个视图控制器的代码:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showDetail"])
{
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
self.managedObjectContext = [self.fetchedResultsController managedObjectContext];
[[segue destinationViewController] setManagedObjectContext:self.managedObjectContext];
}
}
prepareForSegue 调用我在第二个视图控制器上创建的名为 setManagedObjectContext 的方法:
-(void)setManagedObjectContext:(NSManagedObjectContext *)managedObjContext
{
self.managedObjectContext = managedObjContext;
//NSManagedObjectContext *context = managedObjContext;
}
当此代码遇到 Xcode 锁定并最终引发 BAD_Access 内存错误时。当我调试这段代码时,managedObjContext 有一个有效的内存位置,但是代码行一遍又一遍地点击,然后导致 XCode 崩溃。
self.managedObjectContext 只是我在 SecondViewController 类上的一个属性,它的声明如下:
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
如果我使用它,注释掉的行就可以了:
NSManagedObjectContext *context = managedObjContext;
因此,似乎使用属性会导致问题,但我当然想使用它。关于它为什么不喜欢使用该属性的任何解释?
谢谢!跳蚤