Swift 正在观察。appDelegate的有效外观更改

Swift 正在观察。appDelegate的有效外观更改,swift,xcode,macos,Swift,Xcode,Macos,在我的appDelegate的ApplicationIDFinishLaunching方法中,我希望观察从亮/暗模式的外观变化 这两种方法似乎都不管用: NSApp.observe(\.effectiveAppearance) { _, _ in print("it works!") } NSApplication.shared.observe(\.effectiveAppearance) { _, _ in print("it works!") } 如何检测此更改?您只需将

在我的appDelegate的
ApplicationIDFinishLaunching
方法中,我希望观察从亮/暗模式的外观变化

这两种方法似乎都不管用:

NSApp.observe(\.effectiveAppearance) { _, _ in
    print("it works!")
}

NSApplication.shared.observe(\.effectiveAppearance) { _, _ in
    print("it works!")
}

如何检测此更改?

您只需将此
观察者
分配给类级对象,使其保持活动状态,如下所示

class AppDelegate: NSObject, NSApplicationDelegate {


    private var observer: Any!

    func applicationDidFinishLaunching(_ aNotification: Notification) {

        self.observer = NSApp.observe(\.effectiveAppearance) { _, _ in
            print("it works!")
        }
    }
}

您是否保留对
NSKeyValueObservation
对象的强引用?