今天我們來了解一下 NSNotificationCenter 消息通知中心這個類
一個NSNotificationCenter對象在一個程序內,提供一個廣播消息的機制
一個NSNotificationCenter對象從本質上來說是一個通知調度表
每一個正在運行的程序都有一個默認的通知中心,所以你一般不用創建自己
的通知中心,並且一個NSNotificationCenter對象只能在單個工程中投遞消息
如果你想投遞或接受其他進程的通知,你可以用一個NSDistributedNotificationCenter實例
以下是這個類的方法
獲得通知中心
+ (id)defaultCenter //返回當前進程默認的通知中心
管理通知監視者 Managing Notification Observers
- (id)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *))block
//增加一個事件監視者,name監視事件名稱,obj 你將要添加通知的對象
//queue 操作隊列
//這裡還要說的一點是 在你銷毀創建的監視者之前,一定要先調用removeObserver:或removeObserver:name:object:移除它
- (void)addObserver:(id)notificationObserver selector:(SEL)notificationSelector name:(NSString *)notificationName object:(id)notificationSender
//增加一個事件監控,notificationObserver 監控者
//notificationSelector 當監控的事件發生是所調用的方法
//notificationName 消息名稱 notificationSender 接收到的通知所附帶的參數
//同上,在用這個方法創建的對象在銷毀前,一定要先移除它
- (void)removeObserver:(id)notificationObserver
//移除一個監視者所有要監視的事件
- (void)removeObserver:(id)notificationObserver name:(NSString *)notificationName object:(id)notificationSender
//移除指定監視者,指定的通知
發布通知 Posting Notifications
- (void)postNotification:(NSNotification *)notification
//發布一個指定的通知
- (void)postNotificationName:(NSString *)notificationName object:(id)notificationSender
//創建一個指定名稱的通知,並發布它
- (void)postNotificationName:(NSString *)notificationName object:(id)notificationSender userInfo:(NSDictionary *)userInfo
//同上,只是多了一個關於通知的信息,即最後一個參數字典中有通知的信息,也可以為空
以上就是通知中心的整個內容。
我覺得通知中心最重要的就是一對多的關系,即在一個地方發送通知,可以有多處同時響應,
雖然通過委托也能傳遞消息,但是委托是一對一的關系,
這個通知中心,在做項目中會遇到,比較典型的應該就是更換主題的時候,發送一個通知,然後各個
需要更換的地方接收通知然後進行相應的更換,很方便。
好了,在這裡就把這個類的主要內容,還有自己的一點心得分享給大家 ―― LC