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有延迟。还请明白的同学们下面回复下,我也稍后在看看。