我在斯威夫特定义的属性,如:在哪个线程上执行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