Old*_*her 9 model-view-controller xcode cocoa-touch project-organization ios
我正在研究iPhone的多视图应用程序,目前我的视图(VIEW)设置和转换(CONTROLLER?)工作得很好.现在我想为实际的程序数据(MODEL)添加对象.
我的问题是:我应该如何构建我的数据以遵守模型视图控制器(MVC)设计模式?我知道我应该创建单独的类来实现我的数据结构,并且我的控制器类可以从视图中将消息传递给它们,但是我应该检查其他任何组织注意事项吗?特别是Cocoa Touch,Xcode或iOS特有的那些?
其他细节:播放预先录制的音频和用户生成的音频也是必不可少的.我知道这些是模型元素,但它们与"V"和"C"的确切关系我仍然有点模糊.我想当用户操作需要音频播放时,CONTROLLER应该将消息传递给MODEL以准备好适当的声音,但是应该在哪里确切地调节播放?在一个与我想象的ViewController分开的"PlayerController"中?
非常感谢和赦免我的MVC noobery.
Caleb对如何思考问题给出了很好的介绍和概述.在您的特定情况下,以下是您可能会给出描述的部分内容:
Clip(M) - 负责保存实际的音频数据.它会知道如何解释数据并提供有关它的信息,但它实际上不会发挥任何作用.
播放器(V) - 实际上在扬声器上播放剪辑.是的,这是MVC中的一种观点.音频只是另一种表现形式.也就是说,你永远不会把它称为"PlayerView",因为这表明它是UIView的子类.
PlayerView(V) - 播放器的屏幕表示.什么都不知道剪辑.
ClipManager(C) - 一个跟踪系统中所有剪辑并管理从网络中获取它们,添加和删除它们到缓存等的对象.
PlayerViewController(C) - 从ClipManager中检索剪辑,并协调播放器和PlayerView以显示和播放它,以及任何其他UI元素(如"后退按钮"等).
这只是一个如何分解一些理论音频播放器应用程序的例子.有许多正确的MVC方法可以做到这一点,但这是一种思考它的方法.
John Worfin勋爵(而且,我确定,有人在他面前)说:"性格就是你在黑暗中的样子." 好吧,模型就是当没人看的时候应用程序是什么 - 它是定义应用程序行为的数据和逻辑,无论它在屏幕上呈现的方式如何.
想象一下,您决定在应用程序中添加命令行界面.您仍然希望使用相同的结构来管理数据,并且基于数据进行排序,筛选和计算的逻辑也应该相同.无论用户如何看到应用程序或与应用程序交互,应用程序中的代码仍然非常重要/有用.
模型可以非常简单,完全由标准对象组成.iOS应用程序通常更多地是关于检索,存储和显示数据,而不是关于处理数字,所以拥有一个只是一个字典数组的模型或者几个级别的字典层次结构并不罕见.如果你看一下Core Data的NSManagedObject类,它在许多方面与NSMutableDictionary类似.所以,如果它们合适,不要害怕使用标准物体.
也就是说,您当然也可以创建自己的模型对象,如果您希望对数据执行某些要求,或者您希望能够从数据中获取信息,那么这些对象非常有用.
初学者经常想知道每个控制器如何访问模型.有些人主张使用单例模式,主要是因为它提供了一个单独的,共享的,全局可访问的对象.我不推荐这个.相反,在应用程序中有一些高级对象,例如app delegate创建/加载模型(可能是许多单个对象的图形),并将模型指针指向需要它的任何视图控制器.如果这些控制器依次创建其他视图控制器,则它们可以再次向其子控制器提供指向模型(或其一部分)的指针.
我希望有所帮助.
| 归档时间: |
|
| 查看次数: |
4824 次 |
| 最近记录: |