У меня есть приложение командной строки на основе какао, которое программно создает NSWindow + NSView.Он использует цикл nextEventMatchingMask для ручной накачки цикла событий и отправки событий.Этот цикл периодически вызывается кодом верхнего уровня для опроса входных данных.
Если я запускаю все в главном потоке, это работает нормально, так как представление правильно получает входные события.
Если вместо этогоЯ перемещаю создание окна и цикл обработки сообщений в отдельный поток, затем nextEventMatchingMask больше не возвращает никаких событий, и представление не получает ввод.
Мне известно, что только «основной» поток в приложении Какао должен обрабатывать события.Этот вторичный поток, однако, является единственным потоком, который должен общаться с Какао, поэтому я хотел бы использовать его в качестве "основного" потока, если говорить о Какао.Это возможно?Я вызываю NSApplicationLoad из этого потока, и, насколько я знаю, это первая функция Какао, вызываемая в процессе.
Если я не могу указать, какой из потоков Какао является основным, есть ли другой способ создать NSWindow в фоновом потоке и получать для него события?Я не могу сделать что-то вроде вызова NSApplication Run, потому что я не контролирую основной цикл приложения.Мне просто нужно извлечь входные события из окна, когда код верхнего уровня запрашивает это.