关于我想要作为"数据控制器"的单例类的一个基本问题
我已经基于banans线程的大多数单例实现:使用单例创建可由多个视图访问的数组
我想知道函数在单例类。在我将数据控制器设置为单元素之前,我有一个函数将香蕉添加到masterBananaList中。
我如何使用这个函数,而不是直接在我所在的viewController中操纵数组列表。
。(我得到警告:datcontroller隐藏实例变量)
DataControllerSingleton *dataController= [DataControllerSingleton singleDataController];
[dataController addBananaToList:banana];
代替:
DataControllerSingleton *dataController= [DataControllerSingleton singleDataController];
[dataController.masterBananaList addObject:care];
我是否在Singleton中使用局部或全局函数,如果我使用全局函数,我如何使用self。masterBananaList只适用于局部方法。
我可能是错的,但是"dataController隐藏实例变量"向我建议,你有一个名为dataController
的实例变量,这个名为dataController
的局部变量正在遮蔽/隐藏实例变量。尝试更改本地变量的名称。
好吧,只需将本地变量dataController
重命名为不同的东西,您应该摆脱警告。您可以使用myDataController
左右代替。
我更喜欢这个:
DataControllerSingleton *dataController= [DataControllerSingleton singleDataController];
[dataController addBananaToList:banana];
over this:
DataControllerSingleton *dataController= [DataControllerSingleton singleDataController];
[dataController.masterBananaList addObject:care];
我认为对于所有OO语言来说,通过调用方法访问类数据比直接访问属性更可取。你可能会说Objective-C总是自动生成一个合适的getter和setter(除非你自己实现它们)。严格来说,就是通过方法访问。提供addBananaToList:
方法可能看起来像是编程开销,但它为datacontrolersingleton的内部工作方式提供了更大的灵活性。未来你可能会想用不同的东西,将数据移到云端,而不是保存在NSMutableArray中。datacontrolersingleton的内部工作方式不应该是外部类的业务。