使用場景:反向傳值 和 換皮膚、鍵盤。
通知是一對 多的!代理是一對一的!
先監(jiān)聽
后接收
監(jiān)聽: (這里的例子是使用 鍵盤name:UIKeyboardWillShowNotification)
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewUp) name:UIKeyboardWillShowNotification object:nil];// object : 傳一個參數 ,userInfo :傳多個參數(是字典來的)
后接收:
[[NSNotificationCenter defaultCenter]postNotificationName:@"test" object:@"我是通知的參數" userInfo:@{@"1":@"one"}];-
打印測試:
-(void)test:(NSNotification *)sender{NSLog(@"%@",sender.object); // object : 傳一個參數 NSLog(@"%@",sender.userInfo); // userInfo :傳多個參數 NSLog(@"自定義的通知"); }
疑惑:為什么先監(jiān)聽?后發(fā)送通知?
- 下面用3個頁面說明:A、B、C頁面,在 B 頁面添加一個 發(fā)送通知 和一個 監(jiān)聽消息! A、C 分別添加一個 監(jiān)聽消息?。ù藭r,A、B、C中都有一個監(jiān)聽方法!就是一監(jiān)聽到通知就做出顏色改變?。?/li>
- 測試結果是:(只有A 和 B 才能改變?。?/li>

A和B界面才有改變.png
- 因為 通知是在 B 發(fā)送的!A 在 B 的前面,所以,可以監(jiān)聽的到! C 在 B之后,代碼執(zhí)行不到,所以就不能 接收到通知!(好比一個廣播 在 8:00 ~8:30開播,A 在 8:00 之前就打開廣播了,那么就可以收到消息,而C 在 8:30 后才打開 廣播,那么就不會接收到廣播了);