IOS学习之NSNotificationCenter消息机制

Posted 总李写代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS学习之NSNotificationCenter消息机制相关的知识,希望对你有一定的参考价值。

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 [email protected]{@"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.不同页面之间的通知传值

 

          

以上是关于IOS学习之NSNotificationCenter消息机制的主要内容,如果未能解决你的问题,请参考以下文章

IOS学习之UITableView滚动到指定位置

iOS学习之手势

iOS学习之UINavigationController

iOS学习之block

iOS学习之cocoaPods

iOS学习之VFL语言简介