2010-12-23 4 views
1

코코아가 알림과 이벤트 사이에 만드는 차이점을 이해하지 못합니다. 내가 NSNotification를 사용해야 할 것입니다 두 번째를 들어NSNotification과 NSEvent의 차이

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

하지만

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

- 이유 :

예를 들어이 같은 코드를 가질 수있다?

답변

6

차이점은 입력 이벤트를 캡슐화하는 데 NSEvent가 사용된다는 것입니다. 마우스 다운, 키 다운 등 그러나 NSNotification은 관찰자에게 상태 나 개체의 변경을 알리는 데 사용됩니다 (예 : 네트워크 도달 가능성이 변경되거나 새 데이터를 사용할 수있게되거나 창을 이동 한 경우).

귀하의 경우 : 창 이동은 일종의 입력이 아니라 창 위치의 변경입니다. 따라서 NSEvent 대신 NSNotification을 얻습니다.

+0

그러나 왜 입력 이벤트와 상태 변경간에 차이를 만드는 것이 좋을까요? 인생이 불필요하게 복잡 해지지 않습니까? –

+0

@ 폴리 보스 : 뒤에 두 가지 개념이 있기 때문에. NSNotification은이 상태 변경에 관심이있는 모든 사용자에게 게시되지만 NSEvent는 현재 가장 많이 수신되는 수신기 (포커스가있는 개체)로만 전송됩니다. NSEvent는 전체 애플리케이션을 통해 방송 될 의도는 없지만 정확히 NSNotification을 위해 만들어진 것입니다. – JustSid