【发布时间】:2014-08-13 15:34:09
【问题描述】:
这个问题与 MVC(在 iOS 编程中)有关,以及作者使用 MVC 的一本书与我之前看到的相比不同。
我认为我对 Apple 对 MVC 模式的解释非常清楚,正如斯坦福大学关于 iOS 编程的在线课程中所解释的那样。也就是说Model和View应该是独立的,Controller应该起到胶水的作用介于两者之间。
我已经实现了一些 iOS 应用程序,其中视图包含可移动对象。在此过程中,可移动对象已被实现为子视图(或 CALayer:s),并且它们已由主视图实例化。子视图知道它自己的位置和大小(在框架属性中),但该信息通常在我的模型对象中重复。事实上,整个视图层次结构通常在模型中表示(我将我的 spagetti 编码大部分归咎于这种冗余)。
在开始 iOS 游戏开发一书中,作者 Patrick Alessi 实现了一个名为 Blocked(a.k.a breakout)的游戏。在他的实现中,模型分配并初始化 UIView 对象数组(突破游戏中的块),然后控制器将它们添加到视图中。当稍后的块应该消失时,模型会将其从父视图以及数组中删除。
我对 Alessi 的实施有复杂的感觉。它避免了数据的重复!但是它与 MVC 有什么关系呢?我问这个问题是为了拓宽我自己对 MVC 的理解。是否可以将 UIView 对象同时视为视图和模型对象?
【问题讨论】:
标签: ios objective-c model-view-controller