【发布时间】:2019-04-07 12:33:12
【问题描述】:
我的应用中有一些复杂的网络(由于项目要求,我不使用任何第三方依赖项)。例如,在前两个请求提供结果后,我并行发送三个网络请求。我所有的网络都是在单独的模型中完成的,称为 networkClients(遵循 MVC-S 模式)并且直接从存储库调用,而不是从 ViewControllers。 但是,我需要在收到网络响应后的最后一个请求来通知我的 viewController。 我应该怎么做?我认为通知中心不是正确的解决方案,因为它会导致内存泄漏,而且我还没有找到解决此类复杂问题的正确方法。请提供一些突出的解决方案。它应该符合良好的设计模式,如 MVVM 或 MVC,不应该是一些变通方法或 hack。也许代表会工作? 我知道 rxSwift 可以解决我的问题,因为我可以在初始化 viewController 之后开始观察结果,并且在从存储库更新数据之后,我的 viewController 也会收到通知......
【问题讨论】:
-
你能澄清一下“最后的请求”吗?你是指最后一个完成的吗?
-
我认为通知中心非常适合这种情况。模式是用来解决问题的,而不是引起问题的。
-
@danh 是的,最后一个请求完成并获得了一些数据(这个请求也被多次调用,直到满足某个条件,然后 API 固定停止)。但结果应该每次都发送到 viewController。
-
@meaning-matters 我使用 dispatchGroup 但用于其他目的。例如:它可以帮助我确定何时应该发送我的最终请求。它真的很好用。但是,我应该如何在 DispatchGroup 触发通知后通知我的 ViewController?
标签: ios swift model-view-controller nsnotificationcenter uiapplicationdelegate