Могу ли я использовать актеров в Swift, чтобы всегда вызывать функцию в основном потоке?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Могу ли я использовать актеров в Swift, чтобы всегда вызывать функцию в основном потоке?

Сообщение Anonymous »

Недавно я увидел, что Свифт ввел поддержку параллелизма с моделью актера в 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»