01-09 通知

IOS中通知中心NSNotificationCenter应用总结

一、了解几个相关的类

1、NSNotification

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

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

@property (readonly, copy) NSString *name;

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

@property (readonly, retain) id object;

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

@property (readonly, copy) NSDictionary *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,实现传值。

二、通知的使用流程

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

?


1

2

3

4

    //获取通知中心单例对象

    NSNotificationCenter * center = [NSNotificationCenter defaultCenter];

    //添加当前类对象为一个观察者,name和object设置为nil,表示接收一切通知

    [center addObserver:self selector:@selector(notice:) name:@"123" object:nil];

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

?


1

2

3

4

    //创建一个消息对象

    NSNotification * notice = [NSNotification notificationWithName:@"123" object:nil userInfo:@{@"1":@"123"}];

    //发送消息

       [[NSNotificationCenter defaultCenter]postNotification:notice];

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

?


1

2

3

-(void)notice:(id)sender{

    NSLog(@"%@",sender);

}

打印结果如下:

时间: 2024-10-05 23:18:38

01-09 通知的相关文章

KMS Tools Portable 01.09.2017│集成了各类常用的激活工具

鸡哥今天分享一个激活神器吧!KMS Tools Portable是一款激活windows和office的软件,这款软件集合了Ratiborus制作的其他几个软件.相当的实用,且安全便携无毒.可以激活最新的WIN10 .WIN8全系列.WIN7 Office2016.Visio2016.Project2016.OFFICE2013.VISO2013 等等一系列的产品.KMS Tools激活工具由老外@Ratiborus,MSFree Inc.编写.KMSAuto Net,原生单执行文件,可选多种方

AWS re:Invent(2019.01.09)

时间:2019.01.09地点:北京国际饭店 原文地址:https://www.cnblogs.com/xuefeng1982/p/10335801.html

AI行业精选日报(01·09)

微信AI:全面开放各层次NLP能力 1月9日消息,微信AI公布最新开放方案,全面开放各层次NLP能力,截至目前已经积累出了20项NLP能力.据介绍,基于微信平台,微信AI已实现语音输入转文字.扫一扫的扫码/封面和翻译.聊天机器人.声纹锁等功能.目前,微信AI团队已拥有微信智言与微信智聆等技术,其中,微信智聆每天处理超过4亿条语音,识别准确率为97%,服务于腾讯内外超过100项业务,在微信语音输入.语音转文字.王者荣耀.QQ音乐等产品中都提供了技术支持. 来源:https://mp.weixin.

Cheatsheet: 2016 09.01 ~ 09.30

Web Is JavaScript Single-Threaded? Quill 1.0 – Better Rich Text Editor for Web Apps Next Generation Server Compression With Brotli Debugging With Node.js .NET YOU'RE USING HTTPCLIENT WRONG AND IT IS DESTABILIZING YOUR SOFTWARE Troubleshooting High CP

Cheatsheet: 2014 09.01 ~ 09.30

Mobile Testing Mobile: Emulators, Simulators And Remote Debugging iOS 8 and iPhone 6 for Web Developers and Designers Web HTTP vs HTTPS performance comparison Other KADOS - Open Source Scrum Announcing the Message Analyzer 1.1 Release! JavaScript for

Jquery 操作Html 控件 CheckBox、Radio、Select 控件 【转】http://www.cnblogs.com/lxblog/archive/2013/01/09/2853056.html

Jquery 操作Html 控件 CheckBox.Radio.Select 控件 在使用 Javascript 编写前台脚本的时候,经常会操作 Html 控件,比如 checkbox.radio.select,用 Jquery 库操作其他会方便很多,下面用Jq对这些控件的操作进行一个全面的代码总结. 一.Jquery 对 CheckBox 的操作: <input id="ckb1" name="ckb" checked="checked"

2018.09.01 09:22 Exodus

Be careful when writing in the blog garden. Sometimes you accidentally write something wrong, and you may be canceled. This is not a good thing. In fact, I don't want to water in the blog garden. I just want to share it if I have an idea. I think thi

A.01.09—模块的输出—PWM低端输出

PWM输出在汽车上的应用也比较多,它有三种不同的实现方式. 第一种由软件实现,即软件设定对一个输出口拉高和拉低的时间,形成时高时低的PWM控制:但这种方式目前用得不多,这是由使用需求和软件本身的特性决定的.如很多功能都要求较高的频率,比如卤素灯的PWM控制要求频率大于100Hz,这种情况下如采用软件定时来实现则要耗用较多资源.不划算. 第二种由MCU通过其PWM口控制高驱芯片的通断来实现PWM功能,这种情况下软件只需设定定时器有关参数,并不需要实时由软件计时和控制.这种情况用于驱动芯片不能自发实

19 01 09 变量 操作元素的属性 和操作元素的方法

变量 JavaScript 是一种弱类型语言,javascript的变量类型由它的值来决定. 定义变量需要用关键字 'var' 变量类型 5种基本数据类型:1.number 数字类型2.string 字符串类型3.boolean 布尔类型 true 或 false4.undefined undefined类型,变量声明未初始化,它的值就是undefined5.null null类型,表示空对象,如果定义的变量将来准备保存对象,可以将变量初始化为null,在页面上获取不到对象,返回的值就是null