Ser*_*nce 6 iphone model-view-controller cocoa-touch objective-c ios
想要问人们对此的看法.我有一个uiimageview子类,在它的初始化器中我向imageview添加了一些手势识别器,我还在课堂中包含了手势识别器委托方法.我的问题是,这是否违反了模型视图控制器?是否所有与控制视图有关的代码都在视图控制器中?与此相同,在视图中放置按钮操作方法.无论如何,有兴趣听取意见.
从某种意义上说,是的,这违反了MVC模式.正如你所说,视图不应该与如何控制它有关,将这些代码分组到应用程序的另一部分是一个更好的习惯.
而且,OOP的一大优势是能够重用类.这样的视图可以毫无问题地重复使用,因为所有特定于应用程序的控制代码都不在其中.如果在视图中包含委托方法,则无法重复使用它,或者每次都必须更改委托方法!
但规则是针对一般情况的.看一下Mac OS X的Cocoa框架:您已经获得了可可绑定,允许您直接更改视图内容以响应模型中的数据更改.这也以某种方式违反了MVC模式.
另一个例子,请参阅UIViewController.它必须是一个控制器,但它与视图紧密相连,问题仍然存在.视图和控制器之间的分离并不像MVC所希望的那样明确.
总而言之,我会说遵循模式(只要符合您的需求)和使用给定框架遵循模式的方式是一个好习惯.但是有一些情况,如果你明确说明,创建一些捷径并打破规则可能会很有趣.