#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). Если вы заблокируете основной поток, ожидающий закрытия окна, то окно никогда не сможет закрыться, потому что основной поток заблокирован. Любая попытка заблокировать основной поток до закрытия окна логически сводится к тупику.