나는 자신의 목적을 위해 메인 쓰레드를 독점하는 프로그램을 만들고있다. 조건 적으로이 프로그램은 Cocoa 창을 생성해야 할 수도 있습니다. 그러나 주 스레드가 이벤트 루프 (또는 최소한 NSRunLoop
)를 실행하지 않기 때문에 보조 스레드에서 NSRunLoop
으로 UI를 실행할 수 있는지 궁금합니다.UI를 보조 스레드에서 실행할 수 있습니까?
나는 Windows에서 동일한 기능을 사용할 수 있지만 Mac OS에서 작동하는지 여부는 문서에서 분명하지 않으며 가능한 경우 전혀 수행하지도 않습니다.
주 스레드가 NSApplicationMain
을 호출해야합니다.
보조 스레드에서 GUI를 실행하고 주 스레드에서 작업하는 것이 다른 점은 무엇입니까? –
기본 응용 프로그램 설계 원칙 (모든 ** 플랫폼에서)으로 인해 주위를 망칠 필요가 있다고 느낄 때 전체 디자인에 결함이 있으며 강력한 드로잉 보드로 돌아갈 필요가 있음을 나타내는 강력한 표시입니다. – Jay
@Jay, 왜 GUI가 _fundamentally_ 메인 스레드에서 실행 해야하는지 설명해주십시오. 이것은 Windows에서 완벽하게 합법적입니다. WPF 및 여러 앱 도메인을 사용하면 여러 스레드에서 수행 할 수도 있습니다. Java에서 Swing은 메인 스레드와 구별되는 자체 스레드를 가지고 있습니다. 여기에 근본적인 결함이 있다면, 코코아는 항상 'NSApplicationMain'이 호출 된 스레드가 아닌 첫 번째 스레드를 찾거나 첫 번째 실행 루프가 만들어 졌다고합니다. – zneak