gpt4 book ai didi

iOS模型层通知Controller对象

转载 作者:可可西里 更新时间:2023-11-01 03:55:12 24 4
gpt4 key购买 nike

https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html

在上面的链接中,我看到了以下有关模型层应如何与 ViewController 通信的内容。

“当模型对象发生变化时(例如,通过网络连接接收到新数据),它会通知 Controller 对象, Controller 对象会更新相应的 View 对象。”

我的问题是,模型对象如何通知 Controller 对象?有哪些不同的方法可以做到这一点?我的模型层获取用户的位置,然后调用 Web 服务。下载该数据时,我应该如何通知 Controller 对象?

最佳答案

有多种方法可以做到这一点,具体取决于您的具体情况。通常,您会使用协议(protocol)/委托(delegate)实现、键值观察或通知。有一个很好的概述here .

编辑:

我想我应该补充一点,正如对此答案的评论所提到的:使用回调 block 也是一个非常可靠的选择,具体取决于您的需要。关于哪种解决方案最适合哪种情况,有很多可能的决定因素,但这里是我遵循的一般概要。

如果保证一次只需要一个观察者:我通常使用 block 或委托(delegate)。我个人的偏好是,如果只有一两个回调,我会使用 block ,因为这是它们的亮点,但如果有多个可能的方法,我会使用委托(delegate)协议(protocol)。

如果您可能需要多个观察者,我会通过 NSNotificationCenter 使用通知。

当我只需要观察实例的特定属性而不是事件时,我会使用 Key-Value-Observing。

关于iOS模型层通知Controller对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11595617/

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