Notification
蘋果提供通知方式來解除2個模塊的耦合。
提供了
1.註冊觀察者的方法
2.發送通知的方法
3.移除觀察者的方法
這裏需要注意的是多線程的影響。
通常直接寫代碼,addObserver或者postNotification,這些都是在UI線程運行的,並且post notification、deliver notification、progress notification過程是同步的,都是在同一個線程完成的。
這時候,如果你想提升性能,那非UI操作就不要在main線程發通知了,在其他線程發送通知,分發處理通知的過程都和post通知的線程是一樣的;通常,你可以在後臺線程發送通知,分發通知,處理通知,而處理通知時的UI操作可以在main線程完成。
另外,發送異步消息請見NotificationQueue.
ps:
有個疑問,我記得java中在非UI線程更新UI是會報錯的。而IOS中,新建NSThread,在此線程更新UI是沒錯的,並且更新沒有延遲,立即刷新;使用GCD則更新UI有延遲。還請明白的同學們下面回覆下,我也稍後在看看。