如果我在主线程上设置了kvo观察者,但是在后台线程上更改了被观察属性的值,无论主线程处于何种状态,它都会立即中断吗?
谢谢!
如果我在主线程上设置了kvo观察者,但是在后台线程上更改了被观察属性的值,无论主线程处于何种状态,它都会立即中断吗?
谢谢!
如果我在主线程上设置kvo观察者......
使用哪个线程来设置KVO观察者都是无关紧要的。KVO观察者将在值更改所在的线程上调用回调函数。
我再次强调 - KVO不会为您管理线程安全!
接待员模式旨在解决此问题。
请勿尝试在observeValueForKeyPath:ofObject:change:context:中仅使用GCD切换线程,而没有中介对象,否则您可能会遇到针对dealloc的竞争条件(参见“Deallocation Problem”-https://developer.apple.com/library/ios/technotes/tn2109/_index.html#//apple_ref/doc/uid/DTS40010274-CH1-SUBSECTION11)。
不,您的主线程不会被中断,就像您2分钟前发布的问题一样。
唯一真正会中断线程的方式是程序接收到一个信号。这通常只会在出现严重问题时发生。(如SIGSEGV、SIGABRT等)