2010-07-04 105 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