ios - 是否可以创建多个 DispatchQueue?

标签 ios swift4 grand-central-dispatch dispatch-queue

我对 DispatchQueue 东西(包括 DispatchGroups、Qos 等)不是很熟悉。我现在有一个担忧。 就像,我有一个 ViewController 被重用于 Android 的 ViewPager UI。在那个 VC 中,我有一个 TableView,每次更改 ViewPager 中的“页面”时都会重新加载。 我在 TableView 单元格中有一个 favorite button 属性。当用户点击该按钮时,它会存储调用后所需的信息 (JSON)。 我想在 viewWillDisappear 运行时调用 post。在那里我想为每个“页面”创建后台线程并捕获已经创建的线程,以防用户点击一个“页面”而后调用由于任何原因无法达到高潮。 这是我在类里面的内容:

var workItem1: DispatchWorkItem!
var dispatch1: DispatchQueue!

override func viewWillDisappear(_ animated: Bool) {
     super.viewWillDisappear(animated)
}

我应该怎么做才能实现我的目标?

最佳答案

理论上您可以根据需要创建任意数量的队列。您还可以在串行队列(任务一个接一个地处理)或并发队列(任务同时处理)之间进行选择

let concurrentQueue = DispatchQueue(label: "my_queue_1", attributes: .concurrent)
concurrentQueue.sync {
    //do your thing
}  

但是:为每个调用创建一个队列是不好的做法。那不是队列的目的。您应该做的是使用并发队列,其中每个任务代表一个 POST 调用。

或者更好的是,您应该问问自己是否不能一次性将用户收藏的所有页面的数组提交到服务器。这将在某种程度上消除对队列的需求。

关于ios - 是否可以创建多个 DispatchQueue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51286939/

相关文章:

iphone - 自动更新 xcode

ios - 我如何通过单击单选按钮获取 TextView 的 ID

Swift 4 JSONDecoder 可选变量

download - 在 URLSession Background-DownloadTask 期间重新进入 Detail-VC 后 UI 卡住

objective-c - 在 applicationState != UIApplicationStateBackground 测试通过后收到 UIApplicationWillEnterForegroundNotification

ios - 异步操作并发理解

ios - 使用 XCode Open 构建 iOS 应用程序

ios - Theos - 如何从不同的类调用实例方法

ios - 如何使用 Swift 使用 API 响应

iphone - 使用 Facebook 图片的 UITableView 速度缓慢