想征求大家的意见。我有一个 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/