gpt4 book ai didi

ios - Watchkit 和 WCSession

转载 作者:行者123 更新时间:2023-11-29 01:31:50 28 4
gpt4 key购买 nike

根据我的经验,我注意到为 WatchKit 应用程序创建两个或多个界面 Controller (IC) 时,AppleWatch 在用户滑动到它之前开始加载下一个界面。这可能对系统性能很有用,但后来有些事情让我感到困惑。据我了解,每个 IC 都应该有自己的 WCSession 来与配对的 iPhone 通信,但我开始认为这不是真的,因为调试时我看到如果例如第一个 IC 使用 sendMessage 发送请求,答案是由第二个 IC 而不是第一个 IC 的 didReceiveMessage 接收。我还没有尝试过,但也许我应该只在第一个 IC 中创建 WCSession,而且如果我在另一个 IC 上,应用程序会在第一个的 didReceiveMessage 中触发它。如果这是正确的,当消息到达时,我如何在第二个 IC 中做些什么?在 WatchKit 中,我认为我不能使用 Observers。有人可以向我解释一下吗?

通过互联网进行更多搜索,我发现了这个:http://www.sneakycrab.com/blog/2015/5/26/wkinterfacecontroller-lifecycle-in-watchos-101这是关于 IC 预加载的确认,在 WatchOS 2 中也是如此。

最佳答案

您正在使用 WCSession.defaultSession,这很好,正如 Apple 推荐的那样,但这意味着 session 在两个 WKInterfaceControllers< 中指向同一个对象,因此 session.delegate = self 通过设计将 session 的委托(delegate)设置为最近加载(未显示)的 WKInterfaceController。正如您所发现的,WKInterfaceController 经常在特定需要之前加载 - Apple explicitly documents .

解决这个问题的正确方法是在每个 WKInterfaceController 的 didAppear 方法中设置 session 委托(delegate),而不是在 willActivate 中。这将确保可见界面 Controller 始终是当前委托(delegate)。

关于ios - Watchkit 和 WCSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33365775/

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