Я разработчик Windows, и мне сложно понять, как правильно запускать код в основном потоке NSApplication.
Большая часть моего кода выполняется в потоке cvdisplaylink (это приложение opengl). Проблема в том, что я не могу вызывать из него такие вещи, как NSOpenPanel - он вылетает из приложения и предупреждает о запуске подобных вещей только из основного потока.
Это нормально, но основной поток, насколько я понимаю, совершенно непрозрачен, и я могу заставить его делать что-то только с событиями. Метод sendAction NSApp казался многообещающим, потому что я мог явно указать, какой метод вызывать. Но он ничего не «отправил», он просто вызвал этот метод прямо из того же потока.
Я правильно понимаю? Должен ли я помещать какое-то настраиваемое событие (например, NSEventTypeApplicationDefined) в очередь основного потока, чтобы это работало правильно? И если да, как мне реагировать на такие настраиваемые события?