你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> iOS設計模式之NSNotificationCenter 消息中心

iOS設計模式之NSNotificationCenter 消息中心

編輯:關於IOS

消息中心模式和KVO模式有點相似,區別在於,KVO 模式是意圖在於監聽摸一個對應的值的變化,而去出發一個方法相應的動作,而消息中心在於,廣播,它就像一個廣播基站,發送一條消息,在所有的添加監聽的地方都能夠收到此信息,並作出不同活著相同的動作,范圍更廣大,功能更強大

//添加消息中心監聽(添加觀察者,也能說成添加監聽) [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(myNotification:)name:@“test1" object:nil];
它監聽test1 整個值是否有人發送整個消息,監聽者是self本類,如果監聽到,就會觸發myNotification 方法
//通過消息中心發消息,
//注意:消息中心,先做監聽後發消息
//object:發送的參數 [[NSNotificationCenter defaultCenter]postNotificationName:@“test1" object:arra];
//這個方法可以在本工程的任意類中,這樣就能和別的地方進行通信了

//比如說,有五個頁面,在前4個頁面中都創建一個消息中心用來監聽 一個 消息@“change” // 我們在第五個頁面,通過消息中心,發送一個@“change” 消息,這樣前四個頁面就可以收到這個消息,然後做出相應的動作 //一定要注意,創建消息中心監聽 一定要在發送消息之前, //靈活運用各種周期函數時解決這個問題的關鍵

來個實例看看

兩個界面 界面1 界面2 界面1創建消息中心監聽消息, 界面2 床間消息中心,發送消息,並帶有參數

//在一個界面1內創建消息中心 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myNotification:) name:@“test1" object:nil];

在界面1實現監聽方法 //監聽到消息的時候執行該方法 - (void)myNotification:(NSNotification *)n { //從接受到的消息n中,取出object,即消息中加載的參數
//NSString *param = [n object];
NSArray *arr = [n object];
NSLog(@"%@",arr);
}

在界面2發送一個數組作為參數 NSArray *arra = [NSArrayarrayWithObjects:@"a",@"d", nil];
//通過消息中心發消息,
//注意:消息中心,先做監聽後發消息
//object:發送的參數 [[NSNotificationCenter defaultCenter] postNotificationName:@“test1" object:arra];

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved