Как передать параметр блоку, выполненному асинхронно в Swift? - PullRequest
1 голос
/ 06 января 2020

В дополнение к function dispatch_async, который представляет блок для асинхронного выполнения, iOS предоставляет еще один function dispatch_async_f для передачи функции с одним параметром для асинхронного выполнения.
в Swift, я могу назвать dispatch_async как DispatchQueue.global().async {}, но я не нашел способа вызвать dispatch_async_f.
Итак, как мне передать параметр в блок, выполненный асинхронно?

1 Ответ

1 голос
/ 06 января 2020

dispatch_async_f() может использоваться в коде C, в котором нет блоков или замыканий.

В Swift вы просто передаете замыкание, и замыкание вызывает функцию:

DispatchQueue.global().async {
    let theParameter = ...
    theFunction(theParameter)
}

Закрытие может также захватывать значения при создании:

let theParameter = ...
DispatchQueue.global().async {
    theFunction(theParameter)
}
...