NSManagedObjectContext 的单例?死板的?依赖注入?

Posted

技术标签:

【中文标题】NSManagedObjectContext 的单例?死板的?依赖注入?【英文标题】:Singleton for NSManagedObjectContext? Rigid? Dependency Injection? 【发布时间】:2012-12-06 17:42:08 【问题描述】:

我有一个关于应用程序刚性的问题,因为苹果在doc 中说

这使得应用程序架构僵化

我同意这一点。每个 uiviewcontroller 都应该......不依赖于当前的应用程序流,但 UIApplication 委托相当恒定,您始终可以调用该委托。

我听说的关于 nsmanagedobjectcontext 的第二个论点是依赖注入。每个对象都应该只有真正需要的对象,但是如果你必须通过几个不需要它们的控制器传递 managedobjectcontext 但它们被放置在所需的控制器和源控制器之间,这实际上不是依赖注入,我想更好的解决方案是单身人士。

你怎么看?也许您对通过控制器传递 managedobjectcontext 有其他想法?

【问题讨论】:

我有一个应用程序,其托管对象上下文存储在全局单例类中,供任何 VC 查找。这对我来说可以。这是否是最好的编程实践,我会留给更好的程序员来回答。 【参考方案1】:

单例提供托管对象上下文原则上没有错。如果你打算在你的应用程序中只使用一个上下文,那真的没关系。

但是,如果您正在执行后台获取和保存,并且如果您将核心数据并发方法与父子上下文一起使用,那么这种方法很快就会出现问题。

【讨论】:

好的,我明白了...所以,在您看来,Apple 不鼓励将单例用于 managedobjectcontext 是否被夸大了? 不,Apple 的说法是正确的。它更严格的设计。他们还声明“按照惯例”,托管对象上下文被传递给视图控制器。请参阅核心数据片段中的 Accessing the Core Data Stack。

以上是关于NSManagedObjectContext 的单例?死板的?依赖注入?的主要内容,如果未能解决你的问题,请参考以下文章

父/子 NSManagedObjectContext 不起作用

NSManagedObjectContext:自动更新与否?

NSManagedObjectContext:撤消保存操作?

声明 NSManagedObjectContext 时出错

CoreData 多 NSManagedObjectContext 保存通知说明

NSManagedObjectContext 类别