Недавно я увидел, что Свифт ввел поддержку параллелизма с моделью актера в Swift 5.5. Эта модель позволяет безопасному параллельному коду, чтобы избежать гонок данных, когда у нас есть общее, изменчивое состояние. Для этого я обертываю dispatchqueue.main.async на сайте вызова, где бы я установил uiimageview.image или uibutton style.
// Original function
func setImage(thumbnailName: String) {
myImageView.image = UIImage(named: thumbnailName)
}
// Call site
DispatchQueue.main.async {
myVC.setImage(thumbnailName: "thumbnail")
}
< /code>
Это кажется небезопасным, потому что я должен помнить, чтобы отправить метод вручную в основной очереди. Другое решение выглядит как: < /p>
func setImage(thumbnailName: String) {
DispatchQueue.main.async {
myImageView.image = UIImage(named: thumbnailName)
}
}
< /code>
Но это выглядит как много шаблонов, и я бы не сказал, что мне нравится использовать это для сложных функций с более чем одним уровнем гнездования. Итак, есть ли способ сделать мой код более безопасным, то есть всегда вызовать функции пользовательского интерфейса в основном потоке с помощью актеров?
Подробнее здесь: https://stackoverflow.com/questions/678 ... ain-thread
Могу ли я использовать актеров в Swift, чтобы всегда вызывать функцию в основном потоке? ⇐ IOS
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Найдите предупреждающее сообщение `не следует вызывать в основном потоке`
Anonymous » » в форуме IOS - 0 Ответы
- 40 Просмотры
-
Последнее сообщение Anonymous
-