2013-05-15 78 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这个局部变量被遮蔽/隐藏实例变量。尝试更改本地变量的名称。