Как бороться с обновлениями, которые слишком быстры для пользовательского интерфейса? - PullRequest
0 голосов
/ 16 октября 2018

Я обновляю свою UILabel следующим образом:

DispatchQueue.main.async {
    self.runningLabelView.text = text
}

text обновляется в цикле 60 раз в секунду в общей сложности 1 секунда.

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

Могу ли я пропустить любые ожидающие обновления текста во время этого цикла, поэтому обновления текста завершаются с завершением цикла?

1 Ответ

0 голосов
/ 16 октября 2018

Ваша проблема в том, что значение text фиксируется, когда замыкание добавляется в очередь отправки, а не при выполнении замыкания.Это означает, что каждое отдельное назначение текста будет происходить в последовательности.

Одним из решений будет использование свойства, а не захваченной локальной переменной.Таким образом, для метки будет установлено текущее значение свойства, а не захваченное устаревшее значение:

self.messageText = someNewValue
DispatchQueue.main.async {
    self.runningLabelView.text = self.messageText
}

Другой, возможно, лучший, подход будет заключаться в отправке меньшего количества обновлений, но вам нужно будет предоставить большеинформация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...