아래의 간단한 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
)를 사용해 보았지만 아무 소용이 없다.
while을 사용하여 실행하려면 왜 처음부터 알림 관찰자 개체를 만들어야합니까? –
이것은 단지 예입니다. 그러나 수면 상태를 수동으로 확인하는 방법을 찾지 못했습니다. 알림을 사용하는 것 이외의 다른 방법이 있다면 설명을 어디에서 찾을 수 있는지 말해 줄 수 있습니까? 감사. @ElTomato –