**NSNotificationCenter**
iOS 传值有多重实现方式,这里先介绍一种传值方式就是通知中心,它与代理传值最大的不同是不需要两个引用的对象,通知可以实现更大跨度的通信
通知中心在程序中以单例的形式存在,对象的声明为
[NSNotificationCenter defaultCenter]
首先要声明消息的发送
[[NSNotificationCenter defaultCenter] postNotificationName:@"notion" object:id userInfo:@{}]
object可以发送任意类型数据
userinfo发送的数据类型只能为NSDictionary。
实现消息的接收
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notionGetBack:) name:@"notion" object:nil];
addObserver为观察者
selector接收通知需要实现的方法
name为收到的是哪个通知
实现接收方法
- (void)notionGetBack:(NSNotification *)notion
{
}
当然还有一种方法,这种方法虽说在iOS4.0的时候已经退出,但是网上很少有人写出。如果经常翻阅头文件的话就会发现。它与之前最大的不同就是增加了线程,以及省略了回调方法,用block进行的代替,简化了代码,提高代码的紧凑型
[[NSNotificationCenter defaultCenter] addObserverForName:@"notion" object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notion){
NSLog(@"%@", notion.object);
NSLog(@"%@", notion.userInfo);
}]
移除通知
当不需要通知的时候记得要移除通知
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"notion" object:nil]
总结:
通知平常使用的知识点差不多就这么多。希望对大家有帮助。最后,代码一定要养成良好的习惯,该移除的还是要移除。