2016-07-20 60 views
1

我想了解一下的聲明是這樣的:iOS中的調度隊列名稱除了調試以外是否有意義?

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

我看WWDC併發與斯威夫特3,並在上面提到的主持人隊列的標籤顯示在調試器。除此之外,我想知道引用該隊列有意義或有用的名稱,或者這些隊列是否遵循與其他類型的數據結構相同的作用域規則(以便隊列聲明僅在其範圍內有意義)。

即使隊列聲明僅在其範圍內有意義,如果我這樣做會發生什麼?

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

難道這些隊列實際上是一樣的,所以,如果我先說加作業隊列1,然後添加一個工作隊列2,隊列2的工作實際上是在同一條線上的隊列1的工作?

+0

不......你可以將其命名爲「Cheeseburger.Hotdog。 FrenchFries「,如果你想 –

回答

0

該標籤正如它所說:標籤。它沒有語義,也沒有影響範圍。它純粹是「爲了您的信息」(在大多數情況下意味着「調試」)。

0

iOS中的調度隊列名稱是否因調試以外的任何原因而有意義?

它們的主要用途是調試。您理論上可以將其用於其他目的(可通過label屬性訪問它),但建議僅將其用於診斷目的。

難道這些隊列實際上是一樣的,所以,如果我先說一個作業添加到queue1然後一個作業添加到queue2,是queue2的工作實際上是在同一行queue1的工作?

不,它們是不同的隊列,提交給任務的任務完全與提交給另一個任務的任務無關。它們恰好具有相同的名稱,這隻會使調試更容易混淆。

我們大多數人會傾向於給他們仍然捕捉功能的意圖,但使他們獨特的簡化調試,如名稱:

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