Разрешен ли циклический вызов метода?

#objective-c

#objective-c

Вопрос:

Я вызываю метод из двух потоков и подумал, что попробую это:

 - (void)hideEnterButton
{
    if ([NSThread isMainThread])
    {
        enterButton.hidden = YES;
    }
    else
    {
        [self performSelectorOnMainThread:@selector(hideEnterButton) withObject:nil waitUntilDone:NO];
    }
}
  

Причина этого в том, что я понимаю, что вся обработка GUI должна выполняться в основном потоке.
Будет ли это работать?

Ответ №1:

Правильный термин — рекурсивный, а не циклический, и да, это прекрасно для этого.

Ответ №2:

Да, это вполне допустимо. Я уже использовал этот точный метод раньше, и он работает очень хорошо. Единственная проблема в том, что любой код, использующий это, не может предполагать, что кнопка скрыта после ее возврата, потому что она не ожидает завершения вызова. Если это не будет проблемой, используйте его как есть. Если это произойдет, просто передайте YES waitUntilDone: вместо этого.

Ответ №3:

ДА. Это распространенный шаблон.