Есть ли способ обновить интерфейс вручную? Например, у меня есть функция, которая обновляет интерфейс и выполняет некоторую логику. После обновления пользовательского интерфейса он выполнит некоторую логику, которая займет много времени, и обновление пользовательского интерфейса должно быть дождаться завершения выполнения логики. Есть ли способ обновить пользовательский интерфейс вручную, даже если логика даже выполнена?Обновление пользовательского интерфейса вручную
Кажется, что здесь можно использовать нить. Но есть ли способ решить это, не используя нить? Кроме того, используя, если поток может быть использован, какова наилучшая практика?
Спасибо!
Спасибо за ответ Ermiar. Эта проблема обновления на самом деле происходит очень часто, когда вам нужно обновить интерфейс, а затем другой пользовательский интерфейс, но не в одно и то же время. Позвольте привести пример. Предположим, я хочу уволить одного контроллера, вызвать этот контроллер 1, а затем отпустить другой контроллер вправо, вызвать этот контроллер 2. Родитель контроллера - контроллер1, а родительский элемент controller1 - контроллер. Тогда эта проблема случится. он фактически уволит первого контроллера, но он не упустит второй контроллер. Как вы думаете, этот случай, у нас нет другого выбора, кроме как создать новый поток? –
Также я использую очень хакерский способ решить эту проблему. Я использую NSTimer для отклонения контроллера1. Любопытно, когда используется NSTimer, создает ли другой поток? –
Это зависит от того, как вы инициализируете свой таймер, если вы используете schedTimerWithTimeInterval, таймер будет создан в текущем цикле в текущем потоке. В противном случае вы должны добавить таймер в цикл выполнения в другом потоке. Вы можете использовать другие методы для выполнения действий в текущем потоке после задержки, например performSelector: withObject: afterDelay: если вы хотите просто подождать что-то. – Ermiar