iOS中通知中心NSNotificationCenter应用总结

手把手教你用Gazebo+ROS搭建智能小车机械臂系统(含完整配置文件) 本文提供了一份详细的实践指南,手把手教你使用Gazebo和ROS搭建智能小车机械臂仿真系统。内容涵盖从URDF/Xacro模型设计、Gazebo控制器配置到ROS话题通信与系统集成的完整流程,并提供了可复用的配置文件与调试技巧,帮助开发者快速构建并控制一个功能完备的移动操作机器人平台。 阅读详情

一、了解几个相关的类


1、NSNotification

这个类可以理解为一个消息对象,其中有三个成员变量。

这个成员变量是这个消息对象的唯一标识,用于辨别消息对象。

@property (readonlycopyNSString *name;

 

这个成员变量定义一个对象,可以理解为针对某一个对象的消息。

@property (readonlyretainid object;

 

这个成员变量是一个字典,可以用其来进行传值。

@property (readonlycopyNSDictionary *userInfo;

 

NSNotification的初始化方法:

- (instancetype)initWithName:(NSString *)name object:(id)object userInfo:(NSDictionary *)userInfo;

+ (instancetype)notificationWithName:(NSString *)aName object:(id)anObject;

+ (instancetype)notificationWithName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary*)aUserInfo;

注意:官方文档有明确的说明,不可以使用init进行初始化

2、NSNotificationCenter

这个类是一个通知中心,使用单例设计,每个应用程序都会有一个默认的通知中心。用于调度通知的发送的接受。

 

添加一个观察者,可以为它指定一个方法,名字和对象。接受到通知时,执行方法。

- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject;

 

发送通知消息的方法

- (void)postNotification:(NSNotification *)notification;

- (void)postNotificationName:(NSString *)aName object:(id)anObject;

- (void)postNotificationName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary*)aUserInfo;

 

移除观察者的方法

- (void)removeObserver:(id)observer;

- (void)removeObserver:(id)observer name:(NSString *)aName object:(id)anObject;

 

几点注意:

1、如果发送的通知指定了object对象,那么观察者接收的通知设置的object对象与其一样,才会接收到通知,但是接收通知如果将这个参数设置为了nil,则会接收一切通知。

2、观察者的SEL函数指针可以有一个参数,参数就是发送的死奥西对象本身,可以通过这个参数取到消息对象的userInfo,实现传值。

 

二、通知的使用流程

首先,我们在需要接收通知的地方注册观察者,比如:

    //获取通知中心单例对象
    NSNotificationCenter * center = [NSNotificationCenter defaultCenter];
    //添加当前类对象为一个观察者,name和object设置为nil,表示接收一切通知
    [center addObserver:self selector:@selector(notice:name:@"123" object:nil];

之后,在我们需要时发送通知消息

    //创建一个消息对象
    NSNotification * notice = [NSNotification notificationWithName:@"123" object:nil userInfo:@{@"1":@"123"}];
    //发送消息
       [[NSNotificationCenter defaultCenter]postNotification:notice];

我们可以在回调的函数中取到userInfo内容,如下:

-(void)notice:(id)sender{
    NSLog(@"%@",sender);
}

打印结果如下:


基于TDOA的chan算法(定位算法) Chan算法原理 TDOA(TDOA,the time differences of arrival,到达时间差),Chan算法是TDOA定位方法的一个很好用的方法。 Chan算法是非递归双曲线方程组解法,具有解析表达式解,主要特点是:在测量误差服从理想高斯分布时,它的定位精度高、计算量小,并且可以通过增加已确定点的数量来提高算法精度。 该算法的推导前提是基于测量误差为零均值高斯随机变量,对于实际环境中误差较大的测量值,比如在有非视距误差的环境下,该算法的性能会有显著下降。二维情况下,可分为只有三个点参与定 阅读详情

相关推荐

CDR插件开发之CPG插件017 - 在VS2019中实现CPG插件调试(自动写入CPG、自动启动CDR)

在上篇文章中,讲解了图像导出实例:当文档打开后,自动导出当前页面的图像到系统临时文件夹。在代码编写过程中,导出图像路径变量tmpFileName 被修改了很多次,有没有办法实现调试功能,通过控制台打印变量,而不用编译成CPG后再通过消息框来调试?当然是可以的。本篇作为单独篇,以CDR X8版本为例,讲解CPG插件在VS2019中实现调试的具体方法。 工程搭建准备 按照惯例,本篇文章的序号为017,请直接拷贝上一个工程016-export-image(拷贝前最好清理掉 Debug、x64等编译目录..

Zebe 1751

IOS通知中心NSNotificationCenter应用总结

IOS通知中心NSNotificationCenter应用总结 一、了解几个相关的类 1、NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量。 这个成员变量是这个消息对象的唯一标识,用于辨别消息对象。 @property(readonly,copy)NSString*name; 这个成员变量定义一个对象,可以理解为针对某一个对象的消息。...

weixin_30901729的博客 260

用 MATLAB 实现鼻子和嘴的检测

为了方便起见,这里我们使用了 CascadeObjectDetector 中自带的 haarcascade_frontalface_alt2.xml 文件,该文件包含了多个包含鼻子和嘴的样本图像。其中 bbox 变量表示检测到的所有鼻子和嘴的边界框信息。在图像处理中,鼻子和嘴的检测是十分重要的一项任务。本文将介绍如何使用 MATLAB 实现鼻子和嘴的检测,并提供相应的源代码。然后,我们可以调用之前创建的 detector 对象来进行鼻子和嘴的检测。综上所述,我们可以使用以上代码实现鼻子和嘴的检测。

qq_39605374的博客 238

iOS通知的底层原理(实现)

iOS通知的底层原理(实现)

cheng_lin0201的博客 1906

iOS知识点---通知

iOS中的通知(Notification)是一种广泛使用的通信机制,它允许不同组件、模块或应用程序间以一种松耦合的方式传递信息。:不同视图控制器、模型对象、服务类等组件间,当一个组件的状态变化需要告知其他组件但它们之间没有直接引用关系时,可以通过通知来解耦。:对特定通知感兴趣的对象通过向通知中心注册,成为该通知的订阅者。方法,传入订阅者对象(self)、要调用的方法(Selector)以及通知的名称和关联对象。方法的观察者对象),当通知中心接收到匹配的通知时,会调用订阅者的回调方法。

u011489056的专栏 1321

ios开发--注册通知NSNotificationCenter

注册通知:即要在什么地方接受消息 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (mytest:) name:@" postData "object:nil]; 参数介绍: addObserver:观察者,即在什么地方接收通知; selector:收到通知后调用何种方法,即回调函数; n

哲里菲桦 514

NSNotificationCenter简单案例

[code="Objective-C"]@implementation TestClass - (void) dealloc { // If you don't remove yourself as an observer, the Notification Center // will continue to try and send notification obj...

imti_apollo的博客 204

iOS通知中心NSNotificationCenter应用

一、了解几个相关的类 1、NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量。 这个成员变量是这个消息对象的唯一标识,用于辨别消息对象。 @property (readonly, copy) NSString *name; 这个成员变量定义一个对象,可以理解为针对某一个对象的消息。 @property (readonly, ret...

weixin_30911809的博客 80

ios 通知接收两次_iOS通知中心(NSNotificationCenter)的使用总结

iOS通知中心NSNotificationCenter应用总结一、了解几个相关的类1、NSNotification这个类可以理解为一个消息对象,其中有三个成员变量。这个成员变量是这个消息对象的唯一标识,用于辨别消息对象。@property(readonly,copy)NSString*name;这个成员变量定义一个对象,可以理解为针对某一个对象的消息。@property(readonly,ret...

weixin_39735288的博客 741

IOS通知中心(NSNotificationCenter)的使用总结

IOS通知中心NSNotificationCenter应用总结 一、了解几个相关的类 1、NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量。 这个成员变量是这个消息对象的唯一标识,用于辨别消息对象。 @property(readonly,copy)NSString*name; 这个成员变量定义一个对象,可以理解为针对某一个对...

ayaya001100的博客 132

IOS通知中心NSNotificationCenter(自定义或系统自带)应用总结

一、了解几个相关的类 1、NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量。 这个成员变量是这个消息对象的唯一标识,用于辨别消息对象。 @property(readonly,copy)NSString*name; 这个成员变量定义一个对象,可以理解为针对某一个对象的消息。 @property(readonly,retain)...

weixin_30918633的博客 162

iOS开发笔记—通知中心

一、简介 CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行 属性解析: animations:用来保存一组动画对象的NSArray 默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来更改动画的开始时间 二、代码示例

248

iOS 中的观察者模式之通知中心

IOS通知中心NSNotificationCenter应用总结 零、观察者模式   A对B的变化感兴趣,就注册为B的观察者,当B发生变化时通知A,告知B发生了变化。这就是观察者模式。   观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己或者做出相应的一些动作。   在...

174

IOS Notification 通知中心

IOS:NSNotification 1.    通知中心概述 通知中心实际上是在程序内部提供了消息广播的一种机制。通知中心不能在进程间进行通信。实际上就是一个二传手,把接收到的消息,根据内部的一个消息转发表,来将消息转发给需要的对象。通知中心是基于观察者模式的,它允许注册、删除观察者。 一个NSNotificationCenter可以有许多的通知消息NSNotification,对于每一个

u014427812的专栏 446

MTK_AllInOne_DA_mt6785_mt6765_dsp_Deneme_mt6765_mt6785da文件_asp_源

yok mtk suruculeri burada

BAN模拟器用与六面钻文件的仿真

BAN模拟器用与六面钻文件的仿真

上一篇: 失意
下一篇: 遍历字符串 返回字符重复出现的次数
LG_刚刚好
博客等级 码龄10年 14粉丝 91原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值