2012-02-06 148 views
1

如果我在我的主線程上設置了kvo觀察器,但後來在後臺線程上我更改了被觀察屬性的值,我的主線程是否會立即中斷,無論它在哪裏?KVO後臺線程

謝謝!

回答

3

「如果我成立了志願觀察員在我的主線程......」

這是無關緊要的,你用來建立一個志願觀測什麼的線程。 KVO觀察者將在值被改變的線程上被回調。

我無法強調這一點 - KVO不爲您管理線程安全!

接待員模式旨在解決這個問題。

https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/ReceptionistPattern/ReceptionistPattern.html

不要試圖簡單地切換在observeValueForKeyPath使用GCD線程:ofObject變化:背景:沒有中間對象,也可能會與反對的dealloc的競爭條件結束(見「取消分配問題「 - https://developer.apple.com/library/ios/technotes/tn2109/_index.html#//apple_ref/doc/uid/DTS40010274-CH1-SUBSECTION11

2

否您的主線程不會被打斷,就像您在2分鐘前發佈的問題一樣。

線程真正被中斷的唯一方法是程序何時會收到一個信號。這通常只在事情真的出錯時纔會發生。 (SIGSEGV,SIGABRT等)