0

关于我想作为“dataController”的单例类的一个可能的基本问题

我将大部分单例实现基于banans线程:使用单例创建可被多个视图访问的数组

我想知道单例类中的函数。在我将dataController 设为singelton 之前,我拥有一个将香蕉添加到masterBananaList 的函数。

如何使用这个函数而不是直接在我所在的 viewController 中操作数组列表。

即我该如何使用它:(我收到警告:dataController 隐藏实例变量)

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

代替:

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

我是在单例中使用本地函数还是全局函数,如果我使用全局函数,我该如何使用 self.masterBananaList,它只适用于本地方法。

4

2 回答 2

3

我可能是错的,但是“dataController 隐藏实例变量”向我暗示你有一个名为的实例变量dataController,并且这个名为的局部变量dataController正在隐藏/隐藏实例变量。尝试更改局部变量的名称。

于 2013-05-15T15:16:45.000 回答
1

好吧,只需将局部变量重命名为dataController不同的名称,您就应该摆脱警告。您可以使用myDataControllerorso 代替。

我更喜欢这个:

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

在这个:

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

我认为对于所有 OO 语言来说,通过调用方法访问类数据比直接访问属性更可取。您可能会争辩说,Objective-C 总是自动生成适当的 getter 和 setter(除非您自己实现它们)。严格来说,就是通过方法访问。提供方法addBananaToList:可能看起来像编程开销,但它为您提供了更多关于 DataControllerSingleton 内部工作方式的灵活性。将来您可能想要使用不同的东西,将数据移动到云端或其他任何地方,而不是将其保存在 NSMutableArray 中。DataControllerSingleton 在内部的工作方式不应该是外部类业务。

于 2013-05-15T16:03:00.570 回答