gpt4 book ai didi

ios - iOS 中的调度队列名称是否出于调试以外的任何原因有意义?

转载 作者:搜寻专家 更新时间:2023-10-31 19:29:33 25 4
gpt4 key购买 nike

我想知道这样的声明:

let queue = DispatchQueue(label: "com.example.imagetransform")

我正在观看 WWDC Concurrency with Swift 3,上面的演示者提到队列的标签显示在调试器中。我想知道,除此之外,名称对于引用该队列是否有意义或有用,或者这些队列是否遵循与其他类型的数据结构相同的范围规则(以便队列声明仅在其范围内有意义)。

即使队列声明仅在其范围内有意义,如果我这样做会发生什么?

let queue1 = DispatchQueue(label: "com.example.imagetransform")
let queue2 = DispatchQueue(label: "com.example.imagetransform")

这些队列实际上是相同的吗?如果我先说向队列 1 添加一个作业,然后向队列 2 添加一个作业,那么队列 2 的作业实际上与队列 1 的作业在同一行吗?

最佳答案

Are dispatch queue names in iOS meaningful for any reason other than debugging?

它们的主要目的是为了调试。理论上您可以将它用于其他目的(它可以通过 label 属性访问),但建议仅将它用于诊断目的。

Are these queues actually the same so that if I first say add a job to queue1 and then add a job to queue2, is queue2's job is actually on the same line as queue1's job?

不,它们是不同的队列,提交给其中一个的任务与提交给另一个的任务绝对无关。它们恰好具有相同的名称,这只会让调试变得更加困惑。

我们中的大多数人都倾向于给它们命名,这些名称仍然可以捕捉功能意图,但使它们独一无二以简化调试,例如:

let queue1 = DispatchQueue(label: "com.example.imagetransform.1")
let queue2 = DispatchQueue(label: "com.example.imagetransform.2")

关于ios - iOS 中的调度队列名称是否出于调试以外的任何原因有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38489493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com