关于 NSNotificationCenter 中的 object

先看如下一段代码

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(test:) name:@"test" object:@"1"];

在以前的习惯当中,使用通知往往会忽略上面 object 参数,一般大家都会传 nil,但是今天突然对这个 object 参数很好奇,如果传入这个参数会怎么样?于是我就写了上面的代码测试一下。下面是触发通知的操作

[[NSNotificationCenter defaultCenter] postNotificationName:@"test" object:@"2"];

接着是通知触发后的回调函数

- (void)test:(NSNotification *)no {
    NSInteger count = self.countLable.text.integerValue;
    self.countLable.text = [NSString stringWithFormat:@"%zu", ++count];
}

但是结果是触发通知后回调函数不回调,WTF? Why?但是我把添加通知和触发通知中的 object 参数改成一样的就可以了,所以这个 object 到底是个什么东东?又有什么作用呢,看一下水果的文档如下


image.png

anObject

The object whose notifications the observer wants to receive; that is, only notifications sent by this sender are delivered to the observer. If you pass nil, the notification center doesn’t use a notification’s sender to decide >>whether to deliver it to the observer.

大致意思就是这个 object 参数是你想要接收的参数,当收到和这个参数一致的通知的时候参会触发回调函数的执行,如果和这个参数不一致则不会触发回调函数。那这样做有什么用呢?
如果我有一个需求,用户点击某个按钮十次才会触发某个事件,那么我就可以把这个参数设置为 @10,每次点击将发送的 object 加1,这样当点击的数量等于10的时候就可以自动触发回调事件而不需要写

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 每个应用程序或多或少,都由一些松耦合的对象构成,这些对象彼此之间要想很好的完成任务,就需要进行消息传递。 本文将介...
    石丘阅读 1,861评论 4 7
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,739评论 30 472
  • 文章作者:Tyan博客:noahsnail.com 3.4 Dependencies A typical ente...
    SnailTyan阅读 4,569评论 2 7
  • 冷冷的夜 绵绵细雨 我一个人过 爱你太深 发现自己 回不了头 恋人为爱烦忧 分手为思念消瘦 在你心中 我留下了什么...
    敢说真话的妖精阅读 334评论 1 2
  • 在弗洛伊德的一个著作中,我看到了一篇关于行为心理学的研究,说是能从一个人的细节行动察觉到他的内心世界。比如...
    会说话的芦苇阅读 1,427评论 0 8

友情链接更多精彩内容