一个关于单例类的基本问题,我希望将其作为“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,它只适用于本地方法。
答案 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究竟是如何在内部工作的。