NSNotification IOS通知中心

在进行复杂的消息通知或者数据、事件传递时,我们常用代理、block、通知中心等方法来实现

下面就介绍一下基本的通知与监听事件的实现。

        首先我们看一下实现方法调用到的语法

     //注册一个通知事件 包括名称 执行对象 相关传递信息
	 	[[NSNotificationCenter defaultCenter]postNotificationName:@"监听事件" object:self userInfo:dictonary];
/*postNotificationName  这个通知事件的名称

        /*object                           这个通知的执行对象

       /*userInfo                        这个通知想要传递的相关数据(字典)

     //创建一个监听事件,接收通知并执行相关操作
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(getNSNotificationAndDoSomething:) name:@"监听事件" object:nil];

/*addObserver               这个监听的执行对象

        /*selector                        接收到通知后需要执行的相关方法

       /*name                            只接收指定的那个通知的名称

       /*object                            一般nil 

PS:这个函数中 selector方法后面的函数会获取到通知中心传递过来的userInfo数据:

    -(void)getNSNotificationAndDoSomething:(NSNotification *)userInfoDictionary{

    NSString *tex=userInfoDictionary.userInfo[@"name"];

    Dlog(tex);

}

   //事件结束后 需要移除监听事件
    [[NSNotificationCenter defaultCenter]removeObserver:self name:@"监听事件" object:nil];
        参数同上

       下面就通过事例流程来执行以上方法

       我们A控制器下跳转到B控制器 ,当跳转成功后 我们就注册一个通知(使用函数1) 。并在A控制器下创建一个监听者 (使用函数2)当监听到跳转成功时,在A控制器下输出对应的内容。最后记得在-(void)dealloc里移除监听事件(函数3)。

      

       使用通知有许多的优势,首先代码量相比较代理等方法更少,其次通知者和监听者之间无必然联系,不像代理一样需要一一对应执行方法和对象。另外代理是一对一的关系而通知是一对多的关系,一个通知可以有无数个在不同位置的监听者。但是代理的优势也是不可取代的。

监听可以用在一些简单常用的回调、状态监测等事件上。例如付款、下单状态、实时网络状态等。或者键盘监听等等。

       coacoa系统中就有许多不同名称的监听事件,例如:

       

       本文中使用的是默认的通知中心,我们也可以自定义一个通知中心来注册通知事件

       NSNotificationCenter *notificationCenter = [[NSNotificationCenter alloc]init];

      他所发出的通知只会在当前的 NotificationCenter 中进行,不同的 NotificationCenter 之间的通知互不相干。


   

  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值