首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCSession sendMessage不工作

WCSession sendMessage不工作
EN

Stack Overflow用户
提问于 2016-02-17 23:11:15
回答 1查看 709关注 0票数 0

我在我的Watch扩展中调用了这段代码(它确实运行了,并使用断点进行了检查):

代码语言:javascript
复制
 [[WCSession defaultSession] sendMessage:@{
              @"load": @"main"
              } replyHandler:^(NSDictionary<NSString *,id> * _Nonnull replyMessage) {
                  ...
                  }
              } errorHandler:^(NSError * _Nonnull error) {
                  ...
              }];

在我的父母应用程序中,我有:

代码语言:javascript
复制
if([WCSession isSupported]){
    NSLog(@"Apple Watch detected, activated watch deletage.");
    [WCSession defaultSession].delegate = self;
    [[WCSession defaultSession] activateSession];
}

上面的代码在应用程序启动时运行,我已经实现了:

代码语言:javascript
复制
-(void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message replyHandler:(void (^)(NSDictionary<NSString *,id> * _Nonnull))replyHandler{
    ...
}

但它从未被调用过。我曾经让它工作,但现在,我不能正确地调试我的手表应用程序和iOS应用程序(它们不启动,超时等),我一个接一个地部署它们。当我调试Watch扩展时,我可以看到调用了sendMessage...方法(几分钟后,我的错误处理程序调用了一个超时错误),所以没有问题。当我启动我的主应用程序时,我也看到与WCSession相关的代码正在被点击。然而,当我启动我的手表应用程序与它通信时,didReceivedMessage...从未被调用。

我已经从iPhone和手表上删除了我的应用程序,重新启动了这两个设备,并重新启动了我的苹果电脑,然后再次尝试,但都没有效果。我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2016-02-18 02:54:42

尽管Watch并不真正可靠,但在我的例子中,这只是一个简单的内存分配问题。我没有持有对我的WCSession的委托的强引用,它在方法被调用之前就被释放了,我创建了一个强引用,这个问题就消失了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35460478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档