gpt4 book ai didi

ios - 多个 View Controller 中的 WatchConnectivity session

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:14:03 24 4
gpt4 key购买 nike

我正在使用 watchOS 2 开发一个 watch 应用程序,它的父应用程序在 iOS 9 beta 上。我正在使用 WatchConnectivity session 将数据从 Apple Watch 传递到 iPhone。我需要在 2 个不同的 View Controller 文件中进行 session ,那么在每个 View Controller 中启动新的 WCSession 并使用它们是否有任何问题?

基本上我正在尝试使用 performSegueWithIdentifier 从一个 View Controller 导航到另一个 View Controller ,当我将它放入 viewDidLoad 时它工作正常,但是一旦我放入它在 session 方法中,它开始中断,我怀疑它必须对 WCSessions 做些什么。

以下是我尝试导航的代码部分:

- (void)session:(nonnull WCSession *)session didReceiveMessage:(nonnull NSDictionary *)message replyHandler:(nonnull void (^)(NSDictionary * __nonnull replyMessage))replyHandler {
NSString *msg = [message objectForKey:@"msg"];
// NSDictionary* replyValues = @{@"session":@"established between phone and watch"};
if ([msg isEqualToString:@"fromWatch"]) {
isWatch = true;
[self performSegueWithIdentifier: @"startDashboardSegue" sender: self];
}
// NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
// [prefs setObject:messageFlag forKey:@"messageFlag"];

//replyHandler(replyValues);
}

谢谢!

最佳答案

WCSession header 中 WCSessionDelegate 部分上方的注释指出:

----------------------------- WCSessionDelegate -----------------------------

The session calls the delegate methods when content is received and session state changes. All delegate methods will be called on the same queue. The delegate queue is a non-main serial queue. It is the client's responsibility to dispatch to another queue if neccessary.

因此,如果您想更新 UI(并且您正在使用 UIKit),则必须在调用 UI 更新方法之前分派(dispatch)到主队列。

关于ios - 多个 View Controller 中的 WatchConnectivity session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31488391/

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