swift - 快速的大中央调度(GCD)

标签 swift swift2 grand-central-dispatch

我熟悉在 Android 中使用 AsyncTask:创建一个子类,在子类的实例上调用 execute,然后在 UI 线程或主线程上调用 onPostExecute。 swift 中的等价物是什么?

最佳答案

这解决了我在 Swift 中的大部分异步需求:

public func background(function: @escaping () -> Void) {
    DispatchQueue.global().async(execute: function)
}

public func main(function: @escaping () -> Void) {
    DispatchQueue.main.async(execute: function)
}

然后像这样使用:

background {
    // I'm in the background
    main {
        // I'm back on Main
    }
}

例如:

background { [weak self] in
    let result = longOperationToFetchData()
    main {
        self?.data = result.data
        self?.reloadTableView()
    }
}

关于swift - 快速的大中央调度(GCD),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34731442/

相关文章:

xcode - 为什么我在使用 Swift Cocoa App 和桥接 header 时会收到未声明的类型 'PubNub' 编译器错误?

swift - 我如何使用 Swift 来转换它?

ios - swift 如何处理 session 中的 nsjson

ios - 解析 Twitter 登录错误

generics - Swift 2.0 版本的 struct GeneratorOf<T>

ios - 如果我在 dispatch_async block 中有一个 dispatch_sync 调用,然后是第二个 dispatch 调用,那么第二个调用是同步还是异步有关系吗?

ios - sleep() 适用于 iOS 但不适用于 mac?

swift - 为 SWIFT 序列下的 repeatActionforever 内的子 Action 生成随机时间

objective-c - 多线程 Objective-C 访问器 : GCD vs locks

ios - 二元运算符 - 不能应用于字符串类型的操作数!和诠释