IOS學習之NSNotificationCenter訊息機制

總李寫程式碼發表於2016-05-16

NSNotificationCenter是 Cococa訊息中心,統一管理單程式內不同執行緒的訊息通迅。

 新增觀察者接收通知:

//新增通知中心觀察者
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(testMethod:) name:key object:self.person];

引數說明:

          addObserver: 觀察者,誰來接收通知;

        selector: 收到通知後呼叫的方法;

        name: 註冊所觀察通知的名字

         object: 訂閱該通知的物件,如果設定為nil 則接收所有通知

移除註冊觀察者:

     //移除某個指定的觀察者
    [[NSNotificationCenter defaultCenter] removeObserver:self name:key object:self.person];
    
     //移除所有觀察者
    [[NSNotificationCenter defaultCenter] removeObserver:self];

傳送通知:

    //傳送帶引數的通知
     NSDictionary *dic =@{@"1":@1,@"2":@2};
    [[NSNotificationCenter defaultCenter] postNotificationName:key object:self.person userInfo:dic];
    //傳送不帶引數的通知
    [[NSNotificationCenter defaultCenter] postNotificationName:key object:self.person];
    
    //傳送通知物件
    NSNotification *notification =[[NSNotification alloc]initWithName:key object:self.person userInfo:nil];
    [[NSNotificationCenter defaultCenter]postNotification:notification];

引數說明:

postNotificationName:通知名字 ,和註冊通知觀察者名字一致

object:通知的傳送者

userInfo:通知傳遞的引數

 

接收通知:

//收到通知後呼叫方法
-(void)testMethod:(NSNotification*)notification
{
    NSLog(@"notification----->%@",notification);//接收到的通知物件
    id sender =[notification object];//獲取傳送者物件
    NSLog(@"sender----->%@",sender );
    NSDictionary *userInfo=[notification userInfo];//獲取傳遞引數
    NSLog(@"userInfo----->%@",userInfo );
    
}

使用場景:

  1.不同頁面之間的通知傳值

 

          

相關文章