我对OO相当陌生。如果我有两个需要交换数据的A和B类,或者调用对方的方法,我需要能够从类A访问类B的实例。我是否应该将实例对象的地址保存在全局变量中?我应该指定一个(单例)主类,并且使(指向)主类的A和B属性的实例? (AppDelegate浮现在脑海。)如何从另一个班级访问班级?
是否有一个直接的书面方式来实现呢?不知何故,我在这里错过了一些“最佳做法”。我查看了Apple的例子,但没有找到答案。
编辑:由于我相当新的MVC设计模式,我的问题基本上是“谁创造谁”?
我们在这里讨论一个音频播放器。 1.当用户选择一首歌曲时,UI会通过创建一个viewController来显示其波形,该viewController会创建相应的视图。 2.当用户点击播放时,用户界面通过在波形上覆盖新视图来播放歌曲时显示时间线。现在,后一种视图需要来自波形显示viewController的一些信息。现在,我在appDelegate的实例变量中存储一个指向viewController的指针。这工作,但感觉非常奇怪。
我是否应该将两个课程所需的信息外包给每个班级都可以轻松访问的第三个实体?
哇,谢谢澄清。要回到我手边的问题,你的意思是,我的模型和我的观点不应该首先与对方交谈?一切都应该通过控制器发送。 – 2011-04-07 12:29:36
@JoeVölker:对。使用标准视图时,控制器应将数据对象从模型传递到视图并返回。当使用自定义视图时,我通常会给我的自定义视图显示和编辑模型对象的属性。不同之处在于标准视图被设计为通用的,可以在任何应用程序中处理几乎任何模型,而我将为特定模型设计自定义视图。该模型从不与观点对话,应尽可能少地尽可能与控制器交谈。 – 2011-04-08 19:58:36