单例功能IOS



关于我想要作为"数据控制器"的单例类的一个基本问题

我已经基于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的内部工作方式不应该是外部类的业务。

最新更新