快速中央调度(GCD)

J.A*_*rji 3 grand-central-dispatch swift swift2

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

Log*_*gan 9

这解决了我在Swift中的大多数异步要求:

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

public func main(function: @escaping () -> Void) {
    DispatchQueue.main.async(execute: function)
}
Run Code Online (Sandbox Code Playgroud)

然后使用像:

background {
    // I'm in the background
    main {
        // I'm back on Main
    }
}
Run Code Online (Sandbox Code Playgroud)

例如:

background { [weak self] in
    let result = longOperationToFetchData()
    main {
        self?.data = result.data
        self?.reloadTableView()
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 能举个例子吗? (2认同)