gpt4 book ai didi

iphone - Objective-C 中的委托(delegate)和通知

转载 作者:行者123 更新时间:2023-11-29 11:21:22 24 4
gpt4 key购买 nike

在我的 AppDelegate 中,我从 JSON 提要下载了一些数据。我正在为几个 channel 下载现在/下一个/以后的时间表。我现在、接下来和以后各有三个不同的 View Controller 。在每个 View Controller 中,用户可以添加/删除 channel ,因此当发生这种情况时,必须重新下载新添加的 channel 数据。

由于数据已下载到 AppDelegate 并存储在那里,我该如何将其传递给三个 View Controller ?我应该实现三个独立的委托(delegate)吗?请记住,添加新 channel 时,必须再次下载其数据(我现在在 AppDelegate 之外进行)。

有什么帮助吗?

谢谢

最佳答案

这基本上是一个风格问题,您的方法本身并不是无效的。

不过,我会用另一种方式来做 - AppDelegate 并不意味着用作主力,同时拥有多个 AppDelegate 是根本不可能的。

这里有一些关于如何做到这一点的想法(尽管这当然不是唯一正确的方法):

  • 首先,我会使用 Core Data 或其他类型的存储,这些存储可在您的应用中的任何位置使用。
  • 然后也许我会介绍某种“数据 Controller ”类(可能是单例)。此类应根据要求处理数据下载和将该数据分发到您的 View Controller 。
  • 为此目的使用一个中央 Controller ,您可以确保数据只下载一次,因为 Controller 确切地知道哪些数据已经在库存中。
  • 您的 View Controller 将不再负责管理下载,也不再自行访问磁盘上的数据。他们只会向您的数据 Controller 发出请求,并在请求的数据可用时收到回调 - 无论它是否已经在磁盘上或已经下载。
  • 这让您的 VC 保持 slim 和专注,并减少更改界面的痛苦。

关于iphone - Objective-C 中的委托(delegate)和通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6979522/

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