我想知道这样的声明:
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 toqueue2
, isqueue2
's job is actually on the same line asqueue1
'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/