天天看點

IOS NSNotificationCenter 通知中心

今天我們來了解一下 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