【发布时间】:2015-12-02 09:36:24
【问题描述】:
我在 Swift 中定义了一个属性,例如:
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 上运行?
【问题讨论】:
-
您可以在
didSet中使用NSThread.isMainThread()来找出程序在那里运行的线程。如果您使用dispatch_async(some_queue....设置该属性,则必须在some_queue上调用它 -
我知道如何强制排队。我只是想知道默认行为。
标签: multithreading swift closures