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:撤消保存操作?