1. 程式人生 > >NSNotificationCenter 傳遞自定義訊息

NSNotificationCenter 傳遞自定義訊息

物件之間進行通訊最基本的方式就是訊息傳遞,在Cocoa中提供Notification Center機制來完成這一任務。其主要作用就是負責在任意兩個物件之間進行通訊。使用方法很簡單,如下幾個步驟即可:

假設A與B之間進行通訊,B來觸發事件,A接受該事件,並作出響應。
1) A編寫自定義的訊息響應函式update
2) A向訊息中心註冊,[NSNotificationCenter defaultCenter] addObserver: self selector:@selector(update) name:@"update" object:nil]

引數說明:通知中心接收到名為update的通知後,向註冊監聽的物件(此處是self)傳送訊息,呼叫update方法,object是訊息傳遞的資料

3) B觸發事件[[NSNotificationCenter defaultCenter] postNotificationName:@"update" object:nil]

引數說明:向通知中心傳送名為“update”的通知,object是攜帶的資料

每一個程序都有一個預設的NSNotificationCenter,可以通過類方法defaultCenter獲取該訊息中心的例項。訊息中心可以處理同一程序中不同物件之間的訊息。如果要在同一臺機器上進行程序間的通訊,需要使用NSDistributedNotificationCenter。

訊息中心以同步的方式將訊息分發到所有的觀察者中

,換言之,直到所有的觀察者都收到訊息並處理完畢以後,控制權才會回到呼叫者的手裡。如果需要非同步的處理訊息,需要使用通知佇列NSNotificationQueue。

在多執行緒程式中,通知會被分發到每一個發起訊息的執行緒中,這可能與觀察者註冊時所在的執行緒已經不是同一執行緒。