如果我在主线程上设置了kvo观察者,但是在后台线程上我改变了被观察属性的值,我的主线程是否会立即中断,无论它在哪里?
谢谢!
答案 0 :(得分:5)
“如果我在主线程上设置了kvo观察者......”
与您用于设置KVO观察者的线程无关。 KVO观察者将在更改值的线程上回调。
我不能强调这一点--KVO不会为您管理线程安全!
接待员模式旨在解决此问题。
不要尝试在observeValueForKeyPath中使用GCD切换线程:ofObject:change:context:没有中间对象,否则你最终可能会遇到针对dealloc的竞争条件(参见“释放问题” - {{3} })
答案 1 :(得分:2)
没有你的主线程不会被打断,就像你在2分钟前发布的问题一样。
线程真正被中断的唯一方法是程序接收信号。这通常只会在事情出错的情况下发生。 (SIGSEGV,SIGABRT等)