#swift #cocoa #nsuserdefaults
#swift #cocoa #nsuserdefaults
Вопрос:
В 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
срабатывает снова.
Я не знаю, почему это происходит, поскольку вообще ничего не изменилось.
——————- Это ошибка ——————-
Я связался с Apple через TSI, люди в Apple предложили мне сообщить об ошибке по этому поводу. Я сделал. rdar://28928098
Комментарии:
1. Вы установили
frameAutosaveName
или «Автосохранение» окна?2. Нет, это просто недавно созданный проект.
3. Я попробовал ваш код и
userDefaultsDidChange
запускается один раз. Что вы подразумеваете под «когда я касаюсь окна»?4. Я имею в виду, когда вы запускаете приложение, срабатывает уведомление. Затем, когда вы нажимаете на окно приложения, оно срабатывает снова.