2013-05-15 139 views
0

一個或許有關,我想有作爲辛格爾頓功能IOS

我已經基於「DataController類」單例類基本問題大部分在banans線程的單執行的:Using a singleton to create an array accessible by multiple views

我想知道函數在單例類中。 之前我做了一個DataController類我singelton哈德的功能,香蕉添加到masterBananaList。 。

如何使用此功能,而不是直接在的viewController操縱數組列表,我在

即我怎麼用這個(我得到警告:DataController類隱藏實例變量)

DataControllerSingleton *dataController= [DataControllerSingleton singleDataController]; 
[dataController addBananaToList:banana]; 

相反的:

DataControllerSingleton *dataController= [DataControllerSingleton singleDataController]; 
[dataController.masterBananaList addObject:care]; 

我是否在辛格爾頓使用本地或全局函數,如果我用全球如何使用self.masterBananaList只W¯¯本地方法的orks。

+0

單身人士班是設計爲只有一個實例的類。其餘部分與普通課程完全相同。 – Maarten

回答

1

好了,只是局部變量dataController重命名爲不同的東西,你應該擺脫警告。您可以使用myDataController左右。

我寧願這一個:

DataControllerSingleton *dataController= [DataControllerSingleton singleDataController]; 
[dataController addBananaToList:banana]; 

在這一個:

DataControllerSingleton *dataController= [DataControllerSingleton singleDataController]; 
[dataController.masterBananaList addObject:care]; 

我認爲這是通過調用方法訪問類的數據全部面向對象的語言優於訪問大致如此屬性直接。你可能會爭辯說Objective-C總是自動生成一個合適的getter和setter(除非你自己實現它們)。嚴格地說,即使訪問方法。 並提供一種方法addBananaToList:可能看起來像編程開銷,但它爲DataControllerSingleton內部工作方式提供了更多的靈活性。將來你可能想要使用不同的東西,將數據移動到雲或任何其他地方,而不是將其保存在NSMutableArray中。它不應該是外部類業務,DataControllerSingleton的內部工作方式。

3

我可能是錯的,但「DataController類隱藏實例變量」建議,我認爲你有一個名爲dataController的實例變量和名爲dataController這個局部變量被遮蔽/隱藏實例變量。嘗試更改本地變量的名稱。