我已阅读的所有指南和教程都告诉我要从应用程序委托执行该操作,如下所示:
UINavigationController *navController = (UINavigationController *)self.window.rootViewController;
PictureViewController *picList = (PictureViewController *)[[navController viewControllers] lastObject];
picList.managedObjectContext = self.managedObjectContext;
但是,我的View Controller处于容器视图控制器和导航视图控制器的疯狂层次结构中。这也是从目标视图控制器执行此操作的一种可接受的方式,而不会带来任何令人讨厌的后果?
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
self.managedObjectContext = appDelegate.managedObjectContext;
最佳答案
简而言之,是的。两种方法都可以。我已经看到了一些人的示例,这些人只是直接从委托访问它,而不是将其另存为视图控制器中的ivar。大多数情况(也是我的喜好)是按照上面的操作进行。
只要您尊重concurrency问题,就可以了。
关于objective-c - 这是传递ManagedObjectContext的可接受方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11711286/