实现MVC模式

5

我在使用Swift开发iOS应用时遇到了实现MVC模式的问题。根据苹果官方文档,MVC模式包含以下几个部分:

MVC pattern

我对此没问题,但是正如您所看到的,当模型自身发生变化(例如来自套接字的传入消息)时,它应该如何通知控制器?
例如,我有一个聊天应用程序,其中模型表示消息列表。当模型接收到新消息时,它如何通知控制器?是否有一种常规方法来实现这一点?
谢谢

2
两种最常见的方法是委托和使用NSNotifications。 - Paulw11
@Paulw11 是的,运行得非常完美,而且看起来很漂亮,谢谢! - Mathieu
1
键值观察(KVO)也是解决这个问题的一种有效方法。NSHipster有一篇较旧但仍然有趣的文章涉及此问题:http://nshipster.com/key-value-observing/ - Andrew2M
同意@Paulw11的观点....此外,如果存在多个感兴趣的方,通知更加灵活。委托常常暗示着一对一的依赖关系,这只是在理论上抽象化了。(还有KVO,但最好少提及它。:)) - Phillip Mills
2个回答

3

2
层间通信是一个非常有趣的话题,不仅仅需要列出方法清单。以下是一篇来自 objc.io 的相关文章,不仅详尽列出了通信方法,还分析了它们的优劣,并提供了一个流程图以帮助您决定哪种方法最佳。

Making the Right Choice

在您的情况下,模型是发送方,控制器是接收方。通常,控制器持有模型,因此控制器知道模型,但模型不知道控制器。因此,您将处于图表的较低部分。
请阅读完整的文章。它还包括来自苹果框架的示例。非常有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接