【问题标题】:Watch OS2 - performSelector: does not work in controller观看 OS2 - performSelector:在控制器中不起作用
【发布时间】:2015-10-22 01:13:36
【问题描述】:

我正在尝试在 Watch OS2 控制器 (WKInterfaceController) 中调用方法 + 延迟,延迟使用:

[self performSelector:@selector(createPages) withObject:nil afterDelay:3.0];

以及方法:

- (void) createPages {
    NSLog(@"Creating pages");
}

永远不会调用createPages 方法。在控制台中看不到任何错误。似乎完全无视它。有谁知道为什么会发生这种情况?

谢谢!

G

【问题讨论】:

  • 您在哪里使用 performSelector 调用 createPages?在延迟之后调用函数的时间有时会延迟自身。但如果它在 awakeWithContext 或 willActivate 中,它应该可以工作。
  • @tipsywacky 在willActivate 中调用这个

标签: objective-c watchkit watchos


【解决方案1】:

对于这类事情,使用 Grand Central Dispatch 是一种更好的方法,如果您使用 Swift,它也可以与静态调度的方法一起使用。您可以像这样在 3 秒后执行一些代码:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    [self createPages];
});

查看Concurrency Programming Guide 了解更多信息。

【讨论】:

  • 谢谢!将使用 GCD。仍然想知道为什么 performSelector 失败了。
  • 从您发布的代码中,我唯一的猜测是 self 不是 createPages 实现所在的类。但这只是猜测,因为我看不到所有代码的来源。
  • performSelector 也有同样的问题。在 WatchOS 1 中运行良好,在 WatchOS2 中无法运行
猜你喜欢
  • 2016-09-18
  • 1970-01-01
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
  • 2021-09-18
相关资源
最近更新 更多