1

我想知道多長時間從旨意通知得到通知取。NSNotificationCenter:如何長時間才能執行操作

的原因是,我想看看觀察者模式是適合我。我不希望另一個視圖控制器可以在通知發送和處理之前更改該值。我擔心另一個進程(線程?)會更快,並且當它不應該時,該值將被覆蓋。

回答

4

通知關注中心同步傳遞消息,這意味着postNotification:方法不會返回,直到註冊爲接收通知的所有對象都處理完通知爲止。換句話說,您可以認爲發佈通知和接收通知之間沒有時間。

有你需要知道的一些額外的東西:

通知是在其張貼在同一線程上接收。如果使用performSelectorOnMainThread:withObject:waitUntilDone:將通知移動到主線程,則可以在waitUntilDone設置爲NO時中斷同步行爲。如果waitUntilDone設置爲YES,則傳遞通知的線程將阻塞,直到主線程完成執行指定的操作。

沒有在通知將通過其觀察員接到訂單的保證。如果一個通知有多個觀察員,則不要依賴那些以任何特定順序接收通知的觀察員。

鑑於上述情況,並且知道哪個線程在應用程序中發佈通知和線程需要處理它們,你應該能夠找出觀察者模式是否會爲你工作。

+0

根據您的信息,它應該適用於我使用觀察者模式。我只有一個線程(主線程),並且只有一個觀察者(如果傳遞線程阻塞其他操作)。 – testing 2010-10-29 17:46:57

+0

這聽起來對我來說很合適。如果你只有一個觀察者,並且通知在主線程上發佈和處理,那麼它就像它得到的那樣簡單。如果您還沒有創建任何其他訪問該值的線程,則不應該有任何問題。 – 2010-10-29 20:16:30

0

您可以使用enqueueNotification用於細粒度在通知的處理控制,但最終我相信你可以遇到同樣的問題,你已經表達了不管通知中心執行或不

相關問題