2010-07-04 108 views
1

在应用程序委托中创建的大多数情况下,托管对象上下文。 将它传递到视图/控制器层次结构的方式是什么,因此树中的每个导航/选项卡控制器都可以访问它。每次从父母到孩子传递它可能不是最好的,因为我必须每次都要传递这些信息,有时并不是所有的控制者都会以特定的孩子的方式需要它。将managedObjectContext传递给查看/控制器层次结构

回答

6

推荐的设计是进行依赖注入。这意味着当你创建一个UIViewController时,你通过一个属性传入NSManagedObjectContext。如果UIViewController只需要一个或一组NSManagedObject实例,那么您只需通过属性交付这些实例。

该设计更灵活,可以更好地重用您的代码。将所有内容链接到AppDelegate中的一个“硬编码”NSManagedObjectContext是脆弱的,并降低了代码的灵活性。

我在The Mac Developer Network上对此进行了深入讨论。

+0

该文章的链接已损坏。 – 2011-09-13 09:46:42

0

你也可以在主要的Nib中创建一个主要的上下文对象。并将控制器与此对象连接起来。或者如果您只使用一个MOC,请创建singleton

+0

如果控制器在不同的笔尖而不是主要的,那么它将无法工作。辛格尔顿是公平的选择。 – Pablo 2010-07-04 12:40:24

+0

单件是一个破碎的设计,应该不惜一切代价避免。 – 2010-07-04 19:02:17