单例功能IOS

时间:2013-05-15 15:11:01

标签: ios objective-c arrays singleton

一个关于单例类的基本问题,我希望将其作为“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];

我是否在Singleton中使用本地或全局函数,如果我使用global,我如何使用self.masterBananaList,它只适用于本地方法。

2 个答案:

答案 0 :(得分:3)

我可能错了,但是“dataController隐藏实例变量”向我建议你有一个名为dataController的实例变量,并且这个名为dataController的局部变量是阴影/隐藏实例变量。尝试更改本地变量的名称。

答案 1 :(得分:1)

好吧,只需将局部变量dataController重命名为不同的东西,你应该摆脱警告。您可以改用myDataController左右。

我更喜欢这个:

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

这一个:

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

我认为通过调用方法访问类数据的所有OO语言通常优先于直接访问属性。你可能会说Objective-C总是自动生成一个合适的getter和setter(除非你自己实现)。严格说来是通过方法访问。 提供方法addBananaToList:可能看起来像编程开销,但它为DataControllerSingleton内部工作方式提供了更大的灵活性。在将来,您可能希望使用不同的东西,将数据移动到云或其他任何东西,而不是将其保存在NSMutableArray中。它不应该是外部类业务,DataControllerSingleton究竟是如何在内部工作的。