【问题标题】:Is Apple breaking MVC rules in MailboxContentViewCell.h on iOS 8? [closed]Apple 是否在 iOS 8 上的 MailboxContentViewCell.h 中违反了 MVC 规则? [关闭]
【发布时间】:2015-02-13 02:41:58
【问题描述】:

根据MVC规则,V代表视图,M代表数据。严格的 MVC 禁止 V 直接访问 M 就像 http://4.bp.blogspot.com/-tISOU011t_U/T1yDocALTUI/AAAAAAAAAII/AFiwMAr-Z6g/s640/MVC+Obj-C.png 显示的那样,对吗? 我正在对 MobileMail 进行逆向工程,即 iOS 8 上的邮件应用程序,并注意到在 MailboxContentViewCell.h 中,有一个 - (MFMailMessage *)message 方法。如果我正确理解 MVC,MailboxContentViewCell 是 V,MFMailMessage 是 M,V 直接读取 M,这违反了 MVC 规则。那么,是我对 MVC 的误解,还是 Apple 在这种情况下确实破坏了 MVC?

【问题讨论】:

  • 这也可以看作是一个数据传输对象或视图模型类。真正的 M 可能是处理邮件数据库磁盘存储及其与邮件服务器交互的代码。
  • @Thilo 在我对MVC的理解中,M不只是一个单一的类,所以MFMailMessage属于M。

标签: ios model-view-controller view model controller


【解决方案1】:

MVC 不是规则。这是一个模式。这与其说是一种规则,不如说是一种设计理念和一套指导方针。在实践中,即使 MVC 是主要的设计模式,大多数重要的应用程序都不太可能采用纯粹的、未受污染的 MVC 设计。有时它只是不合适。有时这很合适,但进度要求意味着必须牺牲理想主义才能交付某些东西。

那么,Apple 在这里违反了 MVC 吗?我不知道,但这不会让我感到惊讶。如果是这样的话,这似乎也不会特别令人不安。

【讨论】:

  • 我同意你的观点,100% MVC 好得令人难以置信,但我仍然想知道苹果真的在这种情况下打破了 MVC 吗?还是我对 MVC 的误解?
  • 不了解他们的源代码就无法确定。可能是的,但那又如何?
  • 只是为了确定是不是对MVC的误解
猜你喜欢
  • 2019-05-04
  • 1970-01-01
  • 2020-04-11
  • 2018-07-03
  • 2023-03-23
  • 2021-12-15
  • 1970-01-01
相关资源
最近更新 更多