iOS設計模式之NSNotificationCenter 訊息中心

來源:互聯網
上載者:User

標籤:ios設計模式   訊息中心   nsnotificationcenter   

訊息中心模式和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];

iOS設計模式之NSNotificationCenter 訊息中心

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.