通知(NSNotification、NSNotificationCenter)

1、NSNotification

这个类是通知类,由这个类创建的对象是一个通知对象,也可以理解为是一个消息对象。类中有三个成员变量:

name:是消息对象的唯一标识,接受通知消息时用来辨别

object:一个对象,可以理解为针对某个对象的消息

userInfo:一个字典,用来传值

@property (readonly,copy)NSNotificationName name;

@property (nullable,readonly,retain)id object;

@property (nullable,readonly,copy)NSDictionary *userInfo;

NSNotification初始化:

注意:NSNotification不可以使用init进行初始化(理解不懂)

【????   不清楚这个初始化方法怎么用,求助小伙伴】对象方法初始化一个通知对象,并给通知对象的属性赋值

- (instancetype)initWithName:(NSNotificationName)name object:(nullableid)object userInfo:(nullableNSDictionary *)userInfoNS_AVAILABLE(10_6, 4_0) NS_DESIGNATED_INITIALIZER;

类方法创建一个通知对象,这个方法没有userInfo这个属性的初始赋值,所以用来发送无传值的通知

+ (instancetype)notificationWithName:(NSNotificationName)aName object:(nullableid)anObject;

类方法初始化一个通知对象,并给通知对象的属性赋值  anObject为接受对象

+ (instancetype)notificationWithName:(NSNotificationName)aName object:(nullableid)anObject userInfo:(nullableNSDictionary *)aUserInfo;

 

2、NSNotificationCenter

用来 “发送通知” 和 “接受通知”

这个类是通知中心类,内部实现是单利模式,每个程序都有一个默认的通知中心,用来调度通知的发送和接受。

通知中心类相关方法:

a、接收通知的方法:

添加观察者,可以指定一个方法、名称和对象,接受到通知时执行这个指定的方法。这里的name就是通知类的name,只有对应才能接受到通知。

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

 

b、发送通知的3种方法:

发送通知,参数是一个通知对象

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

发送通知,参数是通知的名称,指定的对象

- (void)postNotificationName:(NSNotificationName)aName object:(nullableid)anObject;

发送通知,参数是通知的名称,指定的对象和传递的参数

- (void)postNotificationName:(NSNotificationName)aName object:(nullableid)anObject userInfo:(nullableNSDictionary *)aUserInfo;

上面这三个方法虽然写法不同,但是功能一样,使用哪一个方法取决于NSNotification类如何创建对象。后两种方法其实就是初始化通知并发送通知,将通知对象的初始化和发送方法结合。

 

c、移除通知的方法:

在-(void)dealloc{}中

移除该检测对象(observer)下的所有通知

- (void)removeObserver:(id)observer;

根据通知名称(aName),移除该检测对象(observer)下的一个通知

- (void)removeObserver:(id)observer name:(nullableNSNotificationName)aName object:(nullableid)anObject;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值