iOS WatchKit - 向NSUserDefaults崩溃添加键值观察器

时间:2015-04-08 22:58:05

标签: ios nsuserdefaults key-value-observing watchkit

我正在尝试添加将数据从iPhone发送到Watch的功能。 我已经设置了应用程序组,并且一切运行顺利,但是当我尝试在Watch Extension文件中向NSUserDefaults添加观察者时,应用程序始终在启动时崩溃。 (是的,我已经验证了应用程序组名称是否正确并检查了所有目标功能,并且所有配置文件都是最新的,启用了应用程序组)

代码:

override func willActivate() 
{
    super.willActivate()

    NSUserDefaults(suiteName: "my.suite.name")?.addObserver(self, forKeyPath: "phoneSaysHello", options: NSKeyValueObservingOptions.New, context: nil)
}

override func didDeactivate() 
{
    super.didDeactivate()

    // Remove listener for commands sent from phone
    NSUserDefaults(suiteName: "my.suite.name")?.removeObserver(self, forKeyPath: "phoneSaysHello", context: nil)
}

错误:

  

***因未捕获的异常终止应用程序' NSInternalInconsistencyException',原因:'一个实例   类NSUserDefaults的0x7f99534559b0在键值时被释放   观察员仍在注册。目前的观察信息:    (   上下文:0x0,属性:0x7f9953609200> )'

1 个答案:

答案 0 :(得分:2)

看起来您的NSUserDefaults已超出范围。将userDefaults转换为实例变量应该会停止抛出异常。