2010-12-23 8 views
1

私は、ココアが通知とイベントの間に作る違いを理解していません。私はNSNotificationを使用する必要があると思います1秒間NSNotificationとNSEventの違い

-(void)mouseMoved:(NSEvent*)event { … } 

なく

-(void)windowMoved:(NSEvent*)event { … } 

- なぜ:

例えば私はこのようなコードを持っているだろうか?

答えて

6

違いは、入力イベントをカプセル化するためにNSEventが使用されることです。マウスダウン、キーダウンなど しかし、NSNotificationは、状態やオブジェクトの変更についてオブザーバに通知するために使用されます(ネットワークの到達可能性が変更されたとき、新しいデータが利用可能になったとき、またはウィンドウが移動したときなど)。

あなたの場合:ウィンドウの移動は、何らかの種類の入力ではなく、ウィンドウの位置の変更です。したがって、NSEventではなくNSNotificationを取得します。

+0

なぜ入力イベントと状態の変化に違いがあるのは良いでしょうか?人生を不必要に複雑にするのではないですか? –

+0

@Polybos:それらの背後には2つの異なる概念があるので。 NSNotificationはこの状態変更に関心のある人には公開されますが、NSEventは現在の最上位の受信者(フォーカスのあるオブジェクト)にのみ送信されます。 NSEventは、アプリケーション全体を通して放送されることを意図したものではなく、NSNotificationのために作られたものです。 – JustSid

関連する問題