在class ViewController: NSViewController
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func viewWillAppear() {
super.viewWillAppear()
NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange), name: UserDefaults.didChangeNotification, object: nil)
}
override func viewWillDisappear() {
super.viewWillDisappear()
NotificationCenter.default.removeObserver(self, name: UserDefaults.didChangeNotification, object: nil)
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
func userDefaultsDidChange() {
print("user defaults did change.")
}
}
没有与UserDefaults
相关的其他代码。当应用程序启动时,UserDefaults.didChangeNotification
会触发,当我触摸包含ViewController的窗口时,UserDefaults.didChangeNotification
会再次触发。
我不知道为什么会这样,因为根本没有任何改变。
-------------------这是一个错误-------------------
我与TSI联系Apple,Apple的人建议我提交一个bug。我做到了。 rdar://28928098
答案 0 :(得分:0)
尝试在viewDidLoad()
中调用它override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange), name: UserDefaults.didChangeNotification, object: nil)
// Do any additional setup after loading the view.
}
override func viewWillAppear() {
super.viewWillAppear()
}