iphone - 将手势识别器/ Action 方法附加到 View 会违反 Model View Controller 吗?

标签 iphone objective-c ios cocoa-touch model-view-controller

想征求大家的意见。我有一个 uiimageview 子类,在它的初始化程序中,我向 imageview 添加了一些手势识别器,并且还在类中包含了手势识别器委托(delegate)方法。我的问题是,这是否违反了 Model View Controller ?所有与控制 View 有关的代码都应该在 View Controller 中吗?与 say 相同,将按钮操作方法放在 View 中。无论如何,有兴趣听取意见。

最佳答案

在某种意义上,是的,这违反了 MVC 模式。正如您所说, View 不应该与如何控制它有任何关系,将此类代码分组在应用程序的另一部分是一个更好的习惯。

此外,OOP 的一大优势是能够重用类。这样的 View 可以毫无问题地重用,因为所有控制代码(特定于应用程序)不在其中。 如果您在 View 中包含委托(delegate)方法,您将无法重用它,或者每次都必须更改委托(delegate)方法!


但规则适用于一般情况。看一下用于 Mac OS X 的 Cocoa 框架:您拥有 Cocoa 绑定(bind),它允许您直接更改 View 内容以响应模型中的数据更改。这在某种程度上也违反了 MVC 模式。

另一个示例,请参阅 UIViewController。它必须是一个 Controller ,但它与 View 的联系如此紧密,以至于问题仍然存在。 View 和 Controller 之间的分离并不像 MVC 所希望的那样明确。


总而言之,我认为遵循模式(只要它们符合您的需求)以及您可以使用给定框架遵循模式的方式是一个好习惯。但在某些情况下,如果您将其明确化,那么创建一些捷径并打破规则可能会很有趣。

关于iphone - 将手势识别器/ Action 方法附加到 View 会违反 Model View Controller 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7925214/

相关文章:

objective-c - 难倒: NSURLConnection + php - key/value format issue

ios - 将 subView 适配到 View Swift

ios - 有没有办法反转 SKSpriteNode 的颜色

iphone - 无法在 iOS 中获取音频输出

ios - 如何在 iOS 8 map 上同时显示当前位置和所有注释图钉

iphone - 核心文字并在iOS上复制并粘贴

iphone - 整数 0000 cocos2d

ios - 如何在微调中使用 OpenEars?

iphone - 如何使用 Xcode 从服务器读取 webService?

Objective-C:如何判断哪个其他对象保留了特定对象?