以下の簡単なSwift 4の例は、コンピュータのディスプレイがスリープ状態になると停止するはずです。SwiftでのNSWorkspace通知のリッスン4
class Observer {
var asleep = false
func addDNC() {
NSWorkspace.shared.notificationCenter.addObserver(forName: NSWorkspace.screensDidSleepNotification, object: nil, queue: nil, using: notificationRecieved)
}
func notificationRecieved (n: Notification) {
asleep = true
}
}
let observer = Observer()
observer.addDNC()
while (!observer.asleep) {}
print ("zzzz")
ただし、プログラムはwhileループで停止します。私は間違って何をしています、そして通知を待つ正しい方法は何ですか?
私はセレクタ(もちろん、関数宣言で@objc
と#selector (notificationRecieved)
)を使用しようとしましたが、役に立たなくなりました。
whileを実行する場合は、最初に通知オブザーバオブジェクトを作成する必要がありますか? –
これは単なる例です。しかし、私は手動でスリープ状態を確認する方法を見つけることができませんでした。通知以外の方法がある場合は、どこで説明を見つけるか教えてください。ありがとう。 @ElTomato –