通知

作者: 贝灬小晖 | 来源:发表于2019-02-22 17:03 被阅读91次

使用通知注意事项:

(1)接收通知前必须先移除掉通知,避免只发一次通知时,却出现两次或多次的响应事件;

(2)使用通知的类在被释放时,必须要移除通知;

(1)添加通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respondsToNotification:) name:@"test0" object:_obj0];

_obj0是创建的一个实例,这里暂时不讨论object参数的用法。Observer即为响应者无需多说;selector即为一个响应通知的方法,需要SEL类型;name是一个标识,通知中心主要是通过它来实现消息的精确分发(当然object也有定位作用)。

(2)发送通知

//便利方法

[[NSNotificationCenter defaultCenter] postNotificationName:@"test0" object:_obj0 userInfo:@{@"key":@"_obj0"}];

//使用NSNotification

NSNotification *notification = [[NSNotification alloc] initWithName:@"test0" object:_obj2 userInfo:@{@"key":@"_obj2"}];

[[NSNotificationCenter defaultCenter] postNotification:notification];

发送通知和添加通知对应,需要name、object参数,这里多了一个userInfo,该参数可以把你需要携带的数据发送给该通知的响应者。

其实我们可以很轻易的想到,便利发送通知方法不过是对于使用NSNotification发送通知的一个语法糖,NSNotification才是消息体

(3)移除通知

//移除该响应者的全部通知

[[NSNotificationCenter defaultCenter] removeObserver:self];

//移除该响应者 name==@"test0" 的全部通知

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"test0" object:nil];

//移除该响应者 name==@"test0" 且 object==_obj0 的全部通知

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"test0" object:_obj0];

4、是否需要移除通知?

for (int i = 0; i < 3; i++) {

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respondsToNotification:) name:@"test0" object:nil];

}

//该代码导致的结果是,响应通知回调会走三次。

可以看到,虽然我们在主线程中注册了通知的观察者,但在全局队列中post的Notification,并不是在主线程处理的。所以,这时候就需要注意,如果我们想在回调中处理与UI相关的操作,需要确保是在主线程中执行回调。

https://juejin.im/entry/5a8fe5c551882518c0797ebe

最后是把这个放在主线程中执行 解决了通知明明移除还多次发送的问题

不行…还是不行 最后在viewWillAppear viewWillDisappear 添加 移除 解决问题

相关文章

  • 通知!通知!

    我到现在已有三位粉丝,现在我要开始发福利啦! 我下一篇文章开始写小说啦!希望大家多多支持!谢谢!

  • 通知!通知!

    小仙近日找了一个编辑(啥也不是),有事请找她昂, @小编辑染染 她负责我的更新日常,而且此人闲的要死,如有评论,都...

  • 通知--通知

    因为事情开始多起来了,很难保证下午开始更了,所以决定了,之后每天早上更。 假期结束,很多事情需要去处理,现在不...

  • 通知-通知

    昨天下午,写了一篇文章,可有敏感词,没有成功通过审核,今天晚上,努力搞一篇出来,换另外一个故事,昨天的那个故事,我...

  • 通知! 通知 ! 通知书 !

  • 重要通知!重要通知!重要通知!

    非常感谢小伙伴的关注和支持,以后摄影相关内容将不再这里更新。 喜欢毒家摄影指南内容的小伙伴欢迎关注微信公众号:sm...

  • 推送通知-后台通知/静默通知

    后台远程推送iOS7开始允许应用收到通知后直接在后台(background)状态下运行一段代码,而无需用户点击,可...

  • 通知:本地通知和远程通知

    通知中心(NotificationCenter)和通知(UILocalNotification)是雷锋和雷峰塔的关...

  • Spring 返回通知 异常通知 环绕通知

    返回通知 在方法正常返回结果后的通知。返回通知可以访问到方法的返回值。 示例(附带返回结果的返回通知): 异常通知...

  • 通知与移除通知

    [[NSNotificationCenterdefaultCenter]postNotificationName:...

网友评论

      本文标题:通知

      本文链接:https://www.haomeiwen.com/subject/hrneyqtx.html