2015-04-16 54 views
4

在Swift中創建GCD隊列時出現崩潰,有什麼想法?在Swift中創建GCD隊列?

var q: dispatch_queue_t? 
q = dispatch_queue_create("com.kukodajanos.queryPlaces", 0) 

enter image description here

回答

6

通過在documentational意見按alt尋找它+點擊就可以看到:

Image

在ATTR你可以通過三兩件事:nil, DISPATCH_QUEUE_SERIAL and DISPATCH_QUEUE_CONCURRENT不是int 。

+0

如此糟糕,編譯器甚至不會看到0和nil之間的差異,這會導致運行時崩潰。 – Andy

+0

@安迪你是什麼意思? 0不等於零,所以當然會崩潰。 – Arbitur

+0

沒有編譯錯誤。你可以用0編譯它並在運行時崩潰。 – Andy

1

據我所知第二個參數是一個參考而不是一個整數,所以你應該通過nil而不是0

是否有任何理由將你聲明的變量聲明爲可選的?如果您打算將其分配到下一行,則最好將其設置爲不可選。另外,我想這在其一生中,你將不會改變它,所以它可能會更好,使其一成不變:

let q = dispatch_queue_create("com.kukodajanos.queryPlaces", nil) 
5

傳遞nil而不是0:

var q: dispatch_queue_t? 
    q = dispatch_queue_create("com.kukodajanos.queryPlaces", nil) 
0

傳遞零,而不是0作爲dispatch_queue_attr_t shoild訣竅。此外,函數返回一個隱含的解包可選,而不是可選,是故意的?