我在斯威夫特定義的屬性,如:在哪個線程上執行Swift屬性的didSet {}?
var foo : String {
didSet {
doSomething()
}
}
所以每次我設置foo
像foo = "bar"
我didSet
將被執行。
但是我找不到在哪個線程didSet
正在執行。
例如什麼在這種情況下發生的:
dispatch_async(some_queue, {() -> Void in
self.foo = "bar"
})
這將導致被執行的代碼didSet
。 didSet
將在some_queue
上運行,還是始終在main_queue
上運行?
你可以用'NSThread.isMainThread()''中didSet'找出程序在那裏運行的線程。如果你使用dispatch_async(some_queue ....)來設置屬性,它必須在some_queue上調用 –
我知道如何強制一個隊列,我只想知道默認行爲 – funkenstrahlen