Main.async против main.sync() против global().async в Swift3 GCDIOS

Программируем под IOS
Ответить
Anonymous
 Main.async против main.sync() против global().async в Swift3 GCD

Сообщение Anonymous »

Пример А. Это приводит к сбою приложения.

Код: Выделить всё

DispatchQueue.main.async {
let url = URL(string: imageUrl)
do {
let data = try Data(contentsOf: url!)
DispatchQueue.main.sync {
self.imageIcon.image = UIImage(data: data)
}
}
Пример Б: Но это не так

Код: Выделить всё

DispatchQueue.global().async {
let url = URL(string: imageUrl)
do {
let data = try Data(contentsOf: url!)
DispatchQueue.main.sync {
self.imageIcon.image = UIImage(data: data)
}
}
Насколько мне известно:
  • x.sync означает выполнение действия в основном потоке/потоке пользовательского интерфейса.
  • x.async означает выполнение в фоновом потоке.
  • Глобальный означает выполнение чего-либо с параллельной очередью, т. е. параллельной задачей.
Вопрос 1: Почему мое приложение аварийно завершает работу, когда я выполняю задачу в фоновом режиме поток, т. е. main.async, и затем вызвать основной поток для обновления пользовательского интерфейса?
Вопрос 2: есть ли разница между main.async и global().async?

Подробнее здесь: https://stackoverflow.com/questions/467 ... swift3-gcd
Ответить

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

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

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

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

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