Macを強制的にスリープ状態にすると、NSWorkspaceWillSleepNotificationが正常に取得されます。ただし、エネルギー設定で指定された一定時間後にコンピューターが自動的にスリープ状態になっても、この通知は発生しません。
回避策はありますか?
Macを強制的にスリープ状態にすると、NSWorkspaceWillSleepNotificationが正常に取得されます。ただし、エネルギー設定で指定された一定時間後にコンピューターが自動的にスリープ状態になっても、この通知は発生しません。
回避策はありますか?
私のコメントで述べたように、私はこれを一部のコンピューターで再現できましたが、他のコンピューターでは再現できませんでした。非常に簡単な調査から、IORegisterForSystemPowerも呼び出さない限り、10.7.4はアイドルスリープ時に通知を送信しないようですが、10.6.8は送信します。したがって、10.7のバグである可能性があります。しかし、私のテストはごくわずかだったので、特定のハードウェアモデルのバグか、私が思いもよらなかった奇妙な設定に関係している可能性もあります。
一方、これは意図的な動作である可能性があります。その場合、ドキュメントにバグがあると思います。通知がアイドルスリープと強制スリープの両方に対して送信されることを直接示しているわけではありませんが、それは確かにそれを意味します。
NSWorkspace通知リファレンス(developer.apple.comがダウンしているように見えるためURLを取得できません…)は、「時々」または「強制スリープのみ」ではなく、「マシンがスリープする前に投稿された」と述べています。
QA1340(http://developer.apple.com/library/mac/#qa/qa1340/_index.html)は、両方の種類の睡眠について説明しており、Cocoaを使用して通知を受信できると述べています。一種。それは動作するはずのサンプルコードを提供します、そしてそれは私が問題を再現するために使用したものです。
Appleにバグレポートを提出し、バグレポートをhttp://openradar.appspot.comにコピーして、Appleの開発フォーラムでスレッドを開くことを強くお勧めします。また、有料のMDPメンバーの場合は、10.8DP4.1で試して、開発フォーラムのNDAセクションでスレッドを開始してください。それでも10.8が壊れている場合は、レーダーによってAppleが最終リリースの前に修正する可能性がありますが、誰も報告しなければ修正される可能性はほとんどありません。