프로그래밍 방식으로 NSWindow + NSView를 만드는 코코아 기반 명령 줄 응용 프로그램이 있습니다. nextEventMatchingMask 루프를 사용하여 이벤트 루프를 펌핑하고 이벤트를 디스패치합니다. 이 루프는 일부 상위 레벨 코드에 의해 주기적으로 호출되어 입력을 폴링합니다.백그라운드 스레드에서 코코아 메시지 루프 펌핑
주 스레드에서 모든 것을 실행하면보기가 입력 이벤트를 올바르게 수신한다는 점에서 정상적으로 작동합니다.
대신 창 생성 및 메시지 루프를 별도의 스레드로 이동하면 nextEventMatchingMask는 더 이상 이벤트를 반환하지 않으며 뷰는 입력을받지 않습니다.
나는 코코아 앱의 "메인"스레드 만 이벤트를 처리한다고 가정합니다. 그러나이 보조 스레드는 코코아와 대화해야하는 유일한 스레드이므로 코코아에 관한 한 "기본"스레드로 사용하고 싶습니다. 이것이 가능한가? 이 스레드에서 NSApplicationLoad를 호출합니다. 그리고 지금까지이 프로세스에서 호출 된 첫 번째 코코아 함수입니다.
메인 코코아 스레드가 무엇인지 지정할 수 없다면 백그라운드 스레드에서 NSWindow를 만들고 이벤트를받을 수있는 다른 방법이 있습니까? 내가 응용 프로그램의 메인 루프를 제어하지 못하기 때문에 NSApplication Run을 호출하는 것과 같은 일을 할 수 없습니다. 상위 레벨 코드가 요청할 때 Window에서 입력 이벤트를 가져와야합니다.
이 : http://stackoverflow.com/questions/6178618/mac-os-x-is-it-possible-to-imbue-a-non - 메인 - 스레드가 될 메인 스레드가 내 상황과 똑같이 들린다. – eodabash