我在我的Watch扩展中调用了这段代码(它确实运行了,并使用断点进行了检查):
[[WCSession defaultSession] sendMessage:@{
@"load": @"main"
} replyHandler:^(NSDictionary<NSString *,id> * _Nonnull replyMessage) {
...
}
} errorHandler:^(NSError * _Nonnull error) {
...
}];在我的父母应用程序中,我有:
if([WCSession isSupported]){
NSLog(@"Apple Watch detected, activated watch deletage.");
[WCSession defaultSession].delegate = self;
[[WCSession defaultSession] activateSession];
}上面的代码在应用程序启动时运行,我已经实现了:
-(void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message replyHandler:(void (^)(NSDictionary<NSString *,id> * _Nonnull))replyHandler{
...
}但它从未被调用过。我曾经让它工作,但现在,我不能正确地调试我的手表应用程序和iOS应用程序(它们不启动,超时等),我一个接一个地部署它们。当我调试Watch扩展时,我可以看到调用了sendMessage...方法(几分钟后,我的错误处理程序调用了一个超时错误),所以没有问题。当我启动我的主应用程序时,我也看到与WCSession相关的代码正在被点击。然而,当我启动我的手表应用程序与它通信时,didReceivedMessage...从未被调用。
我已经从iPhone和手表上删除了我的应用程序,重新启动了这两个设备,并重新启动了我的苹果电脑,然后再次尝试,但都没有效果。我做错了什么?
发布于 2016-02-18 02:54:42
尽管Watch并不真正可靠,但在我的例子中,这只是一个简单的内存分配问题。我没有持有对我的WCSession的委托的强引用,它在方法被调用之前就被释放了,我创建了一个强引用,这个问题就消失了。
https://stackoverflow.com/questions/35460478
复制相似问题