根据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上的Mail App,并注意到在MailboxContentViewCell.h中,有一个 - (MFMailMessage *)消息方法。如果我正确理解MVC,则MailboxContentViewCell是V而MFMailMessage是M,V直接读取M,这打破了MVC规则。那么,这是我对MVC的误解,还是Apple在这种情况下确实打破了MVC?
答案 0 :(得分:3)
MVC 不规则。这是模式。它不是一个规则,而是一个设计哲学和一套指导方针。在实践中,即使MVC 是主要的设计模式,大多数重要的应用程序也不太可能采用纯粹的,无污染的MVC设计。有时它只是不合适。有时这是一个很好的契合,但时间表要求意味着必须牺牲理想主义才能运送东西。
那么,Apple在这里是否侵犯了MVC?我不知道,但它不会让我感到惊讶。如果它们也不会显得特别令人不安。