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

#ios #uiview #uibutton

#iOS #пользовательский интерфейс #uibutton #uiview

Вопрос:

У меня есть метод (void) buttonClicked: (id) sender{}. После того, как пользователь нажимает на кнопку, в графический интерфейс вносятся два изменения в следующем порядке:

  1. Изменить
  2. Пятисекундное ожидание с использованием [NSThread sleepForTimeInterval: 5]
  3. Изменение B

К сожалению, изнутри метода buttonClicked я, похоже, не могу обновить представление после изменения A, так что при выходе из метода buttonClicked видно только изменение B. Я понимаю, что представления могут быть изменены только из основного потока, и я видел ссылки на метод performSelectorOnMainThread , но я не могу понять, как его вызвать и как обновить представление с его помощью.

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

1. Документация для performSelectorOnMainThread:withObject:waitUntilDone: содержит ссылки на примеры кода.

2. Самый простой способ — извлечь код, который выполняет обновления, в свою собственную функцию (например, — (void)refreshView , а затем вызвать ее из buttonClicked: , с помощью [self performSelectorOnMainThread:@selector (Просмотр обновления)]

3. Никогда не переводите основной поток в спящий режим!