UserDefaults.didChangeNotification срабатывает каждый раз при загрузке представления

#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. Я имею в виду, когда вы запускаете приложение, срабатывает уведомление. Затем, когда вы нажимаете на окно приложения, оно срабатывает снова.