(我读过很多关于此的 stackoverflow 文章,以及一般的 Cocoa MVC,但大多数都与视图控制器之间的信息共享有关。)
鉴于以下情况:
问:处理模型数据更改通知以及将该数据提供给视图控制器的最佳实践是什么?
我见过的方法包括:
Model 类发布通知,并提供通知的 userInfo 字典中的数据。视图控制器监听通知,查看用户信息。例如Apple 的 SeismicXML 示例代码。
Model类定义了一个Protocol,View Controller作为委托,响应Model的具体协议方法。
Model类保存一个指向View Controller的指针,直接调用View Controller中的方法或属性。 (我必须说,我不喜欢这个,因为它需要模型和控制器之间的紧密绑定。)
我倾向于通知方法,但想听听其他人的意见。
我会不惜一切代价避免模型存储指向视图控制器的指针。这是正常责任的倒置。在 MVC 中,模型应该独立于任何控制器运行。
委托/协议模式非常适合在视图控制器生命周期内创建和销毁的短期模型。
通知和 KVO 是我处理底层模型更改的主要方式。它允许模型存活很长时间,并且独立于在其生命周期中创建和销毁的控制器而工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)