Приостановка выполнения основного потока до закрытия NSWindow

#objective-c #grand-central-dispatch #nsthread #nsobject #performselector

#цель-c #grand-central-dispatch #nsthread #nsobject #performselector

Вопрос:

Я новичок в objective-c.Я хочу приостановить выполнение основного потока до тех пор, пока не будет закрыто ключевое окно моего приложения.Я попытался следующим кодом

[mywindow performSelector:@selector(isVisible:) onThread:[NSThread currentThread] withObject:self waitUntilDone:YES];

Это приостановит выполнение.После закрытия mywindow основной поток не выполняется (приостановлен в той же строке).Как я могу это сделать?

Комментарии:

1. пожалуйста, не блокируйте основной поток по какой-либо причине. и ваш код не имеет смысла

2. Но это необходимо для моего приложения.

3. почему бы вам не завершить текущее действие, а затем выполнить его после закрытия главного окна.

Ответ №1:

Это невозможно; Это парадокс: код, ответственный за закрытие окна, должен выполняться в главном потоке (потому что это код AppKit / UI). Если вы заблокируете основной поток, ожидающий закрытия окна, то окно никогда не сможет закрыться, потому что основной поток заблокирован. Любая попытка заблокировать основной поток до закрытия окна логически сводится к тупику.