HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了IOS 监听(NSNotification)的优缺点和项目实践应用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

在IOS应用开发中有一个”Notification Center“的概念。它是一个单例对象,允许当事件发生时通知一些对象。它允许我们在低程度耦合的情况下,满足控制器与一个任意的对象进行通信的目的。这种模式的基本特征是为了让其他的对象能够接收到在该controller中发生某种事件而产生的消息,controller用一个key(通知名称)。这样对于controller来说是匿名的,其他的使用同样的key来注册了该通知的对象(即观察者)能够对通知的事件作出反应。

       优势:

        1.不需要编写多少代码,实现比较简单;

        2.对于一个发出的通知,多个对象能够做出反应,即1对多的方式实现简单

        3.controller能够传递context对象(Dictionary),context对象携带了关于发送通知自定义的信息

       缺点:

        1.在编译期不会检查通知是否能够被观察者正确的处理; 

        2.在释放注册的对象时,需要在通知中心取消注册

        3.在调试的时候应用的工作以及控制过程难跟踪;

        4.需要第三方对喜爱那个来管理controller与观察者对象之间的联系;

        5.controller和观察者需要提前知道通知名称、UserInfo Dictionary keys。如果这些没有在工作区间定义,那么会出现不同步的情况;

        6.通知发出后,controller不能从观察者获得任何的反馈信息。

1、.注册通知addObserver:SELEctor:name:object,并实现触发通知后要实现的操作

   [[NsnotificationCenterdefaultCenter] addObserver:selfSELEctor:@SELEctor(reloadJpushData:)name:@"JPUSHNOTIFICATION"object:nil];

- (void)reloadJpushData: (Nsnotification *)sender{ 

[self getData];

}

2、发送通知postNotificationName:object(就在触发通知方法里写)

[[NsnotificationCenterdefaultCenter] postNotificationName:@"JPUSHNOTIFICATION"object:nil];

3、移除通知:removeObserver:和removeObserver:name:object:

其中,removeObserver:删除通知中心保存的调度表一个观察者的所有入口,而removeObserver:name:object:删除匹配了通知中心保存的调度表中观察者的一个入口。我以前发现不移除通知也不会报错,但是想想不用的东西进行移除,然后用的时候到再进行注册,这是一种良好的编程方式,有始有终,不要给程序留下潜在的问题。在dealloc方法下实现

这个比较简单,直接调用方法就行。例如:

移除单个通知:[[NsnotificationCenter defaultCenter] removeObserver:self name:@"JPUSHNOTIFICATION" object:self];

移除当前所有通知:[[NsnotificationCenterdefaultCenter] removeObserver:self];

大佬总结

以上是大佬教程为你收集整理的IOS 监听(NSNotification)的优缺点和项目实践应用全部内容,希望文章能够帮你解决IOS 监听(NSNotification)的优缺点和项目实践应用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。