我有一种情况,我需要在多个 WKInterfaceControllers 之间共享 WCSession。单例方法不起作用,一旦将委托设置为一个类,其他类中的所有委托都将失效。场景:接口A发送和接收数据,根据数据内容,呈现接口B。点击接口B,将请求和接收额外的数据。您将如何在 A 和 B 之间共享 WCSession?
问问题
626 次
2 回答
2
另一个答案没有解释应用程序范围的会话会起作用。
您可以使用WCSession
适用于所有界面控制器的应用程序范围的单例。您只需在应用程序生命周期的早期实例化一个会话管理器,并让它成为它自己的委托。
会话管理器(单例)可以为您的接口控制器处理所有传输,而不是试图让每个接口控制器处理会话委托(这不会很好地工作)。
如另一个答案中所述,您可以使用通知让感兴趣的接口控制器知道他们的新数据何时到达。
使用模块化方法,例如会话或数据管理器,有助于将此类代码置于控制器之外,而控制器实际上并不属于它。它还使测试和使用每个模块变得更加容易。
我不会在这里重复代码,因为已经在 Stack Overflow 上发布了几个现有的答案,以及网络上的文章,其中详细介绍了这种技术。例如:
您经常会在更狭窄的问题中找到这些类型的答案,这些问题询问如何在手表应用程序及其复杂控制器之间共享数据。
于 2016-07-15T14:37:33.497 回答
0
使用NSNotification并监听所有视图控制器的变化。
于 2016-07-15T09:19:55.763 回答