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.不同頁面之間的通知傳值