浅谈iOS NSNotification

通知有四步走:

1、发送通知:

创建通知的时候有两种情况:(发送通知:调用观察者处的方法)

(1)

- (void)postNotificationName:(NSNotificationName)aName object:(nullable id)anObject;

参数说明:

postNotificationName:通知的名字,也是通知的唯一标示,编辑器就通过这个找到通知。这个名字和接收通知的名字要对应相同

object:传递的参数

(2)

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

参数说明:

postNotificationName:通知的名字,也是通知的唯一标示,编辑器就通过这个找到通知,这个名字和接收通知的名字要对应相同

object:传递的参数(任何类型都可以)

userInfo:传递的参数(一点要字典格式)


示例:

 NSDictionary *callbackDic = @{@"userId":@"JDD",@"token":@"sdkjhgoaslforejfdsankjjas",@"type":@"3",@"code":@1};
 [[NSNotificationCenter defaultCenter]postNotificationName:@"giveDic" object:@"haha" userInfo:callbackDic];


2、接收通知:(注册通知:即要在什么地方接收通知)

接收通知的时候,如果需要传递具体的信息内容,则方法名后面要跟着:,如果不需要传递具体的信息内容,怎不需要有:。

- (void)addObserver:(id)observer selector:(SEL)aSelector name:(nullable NSNotificationName)aName object:(nullable id)anObject;
参数说明:

addObserver:观察者,即在什么地方接收通知

selector:收到通知后调用何种方法

name:通知的名字,也是通知的唯一标示,编辑器就通过这个找到通知的。


示例:

//接收通知
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(receiveDic:) name:@"giveDic" object:nil];



3、处理通知事件:

#pragma -mark 处理通知事件
- (void)receiveDic:(NSNotification *)info {
    NSLog(@"userInfo----%@",info.userInfo);//获取传递信息的字典
    NSLog(@"object-----%@",info.object);//获取传递的对象
}


4、释放通知:

(1)释放所有的观察者

- (void)removeObserver:(id)observer;

参数说明:

removeObserver:观察者,即在什么地方接收的通知

(2)通过name单个释放

- (void)removeObserver:(id)observer name:(nullable NSNotificationName)aName object:(nullable id)anObject;
参数说明:

removeObserver:观察者,即在什么地方接收的通知

name:通知的名字,也是通知的唯一标示,编辑器就通过这个找到通知的。


示例:

- (void)dealloc {
    //释放通知
    [[NSNotificationCenter defaultCenter]removeObserver:self name:@"giveDic" object:nil];
}



-----------------------------分割线-----------------------------

以上记录了我目前对NSNotification的理解,如有不当之处,还请大侠们指正,帮助我成长,谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值