gpt4 book ai didi

iOS/Cocoa - 数据模型 <-> Controller 的设计模式

转载 作者:行者123 更新时间:2023-12-03 17:22:09 25 4
gpt4 key购买 nike

(我读过很多关于此问题的 stackoverflow 文章,以及一般的 Cocoa MVC,但大多数都与 View Controller 之间的信息共享有关。)

鉴于以下情况:

  • 负责下载、解析、验证和存储(XML 或 JSON 派生的)数据的 DataModel 类,

  • ViewController 类,它将实例化单个 DataModel 对象,并且需要随着时间的推移从该 DataModel 获取信息(例如更新 View 以反射(reflect)模型中的更改)

问。处理模型数据更改通知以及将该数据提供给 View Controller 的最佳实践是什么?

我见过的方法包括:

  • Model 类发布通知,并在通知的 userInfo 字典中提供数据。 View Controller 监听通知,查看用户信息。例如Apple 的 SeismicXML 示例代码。

  • Model类定义了一个Protocol,View Controller作为委托(delegate),响应Model的具体协议(protocol)方法。

  • Model类保存一个指向View Controller的指针,直接调用View Controller中的方法或属性。 (我必须说,我不喜欢这个,因为它需要模型和 Controller 之间的紧密绑定(bind)。)

我倾向于通知方法,但想听听其他人的意见。

最佳答案

我会不惜一切代价避免模型存储指向 View Controller 的指针。这是正常责任的倒置。在 MVC 中,模型应该独立于任何 Controller 运行。

委托(delegate)/协议(protocol)模式非常适合在 View Controller 生命周期内创建和销毁的短期模型。

通知和 KVO 是我处理底层模型更改的主要方式。它允许模型存活很长时间,并且独立于在其生命周期内创建和销毁的 Controller 而工作。

关于iOS/Cocoa - 数据模型 <-> Controller 的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21010864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com