什麼是在Objective-C中獲取對「單例」對象的引用的好方法?請注意,具體而言,我不是指單例模式,我指的是通常只有一個實例的對象。這特別適用於應用程序模型。例如,在一個烹飪應用程序中,我想要一個類(RecipeModel),它可以爲我提供我係統中所有「食譜」對象的NSArray。在Objective-C(iPhone)中傳遞引用的靈活方式?
我不希望每次都從持久性存儲裝載這些數據 - 將它們加載一次,然後將它們緩存在內存中(換句話說,在這個類的變量中)是有意義的。如果我這樣做,我的幾個類可能需要一種方法來到這個實例。
什麼是最靈活的方式來做到這一點?以下是我能想到的所有選項。
- 讓RecipeModel一個真正的辛格爾頓,用+(RecipeModel *)sharedRecipeModel方法
- 製作的美食傑的NSArray通過類方法訪問。然後,每個viewController可以創建一個新的RecipeModel並獲得相同的(靜態/全局)數據。 +(NSArray的*)美食傑
- 中的appDelegate創建它,並使用sharedApplication得到一個參考吧
- 確保一切都在界面生成器,並使用一個IBOutlet到類的副本傳遞給我的viewController
在其他平臺(flex)上,我會使用DependencyInjection或MVC框架來處理這種佈線。我讀過Objective-C並不需要「DI框架」,因爲它具有類別。我不知道評估這個問題,但類別當然不能解決這個問題。
有趣的閱讀:http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html – fphilipe 2010-01-16 15:38:53