- 我有一個使用核心數據
- 核心數據由視圖控制器,以及用於通知
一個iOS的項目執行
- 中創建爲數據庫活動單個類稱爲
DatabaseEngine
- 在的appDelegate
didFinishLaunchingWithOptions
,DatabaseEngine
被實例化 DatabaseEngine
包含視圖控制器和用於通知- 在視圖控制器的
viewDidLoad
我設置屬性(代表)DatabaseEngine
委託給視圖控制器實例 - 數據庫打開後,完成處理程序(通過委託屬性)調用方法來設置視圖控制器和通知
關注(時間問題)
- 我擔心有可能是情景(計時問題),其中
DatabaseEngine
創建第一,在那一刻視圖控制器的viewDidLoad
不會被執行,因此DatabaseEngine
代表就沒有初始化,因此該數據庫將執行completionHandler但由於該委託是零,沒有任務就完成
我做了什麼,以解決合作ncern
- 裏面的視圖控制器的viewDidLoad,我和檢查,如果數據庫已啓動,如果視圖控制器沒有裝載,如果是的話,我執行任務(建立視圖控制器的意見)一次。
注意 -我沒有使用明確,但根據我的理解completionHandler線程異步執行。
問題
- 我已經嘗試過幾次,視圖控制器數據是否正確,有似乎沒有計時問題。我甚至試圖通過一個較大的值循環(創建一個延時),並且仍然沒有時機的問題。我想知道爲什麼 ?
- 是我實現的一個很好的設計還是有更好的方式來做到這一點?
- 是正確的方式來解決我的顧慮?
非常感謝你!這是一個好主意,在managedObjectContext的存取器中做懶惰的實例化! – user1046037 2012-04-29 05:34:28