我正在尝试添加将数据从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> )'
答案 0 :(得分:2)
看起来您的NSUserDefaults
已超出范围。将userDefaults
转换为实例变量应该会停止抛出异常。