每次加载视图时都会触发UserDefaults.didChangeNotification

时间:2016-10-23 14:57:59

标签: 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会再次触发。

我不知道为什么会这样,因为根本没有任何改变。

-------------------这是一个错误-------------------

我与TSI联系Apple,Apple的人建议我提交一个bug。我做到了。 rdar://28928098

1 个答案:

答案 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()


    }