NSNotificationCenter通知
2023-12-26 15:30:23
使用观察者模式来实现的用于跨层传递消息的机制
参考文章
ios消息机制(NSNotification 和 NSNotificationCenter)
透彻理解 NSNotificationCenter 通知(含实现代码) - 掘金
NSNotificationCenter
@property (class, readonly, strong) NSNotificationCenter *defaultCenter;
该属性是获取 NSNotificationCenter 唯一单例,它就是一个消息分发中心,通过使用这个唯一的实例我们进行添加通知、发送通知和移除通知
使用方法
添加通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respondsToNotification:) name:@"test" object:nil];
Observer
为响应者,selector
为一个响应通知的方法,name
是一个标识,通知中心主要是通过它来实现消息的精确分发。
registerForNotifications:注册通知在viewdidload里面调用
发送通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"test" object:nil userInfo:nil];
//使用NSNotification
NSNotification *notification = [[NSNotification alloc] initWithName:@"test0" object:_obj2 userInfo:@{@"key":@"_obj2"}];
[[NSNotificationCenter defaultCenter] postNotification:notification];
发送通知和添加通知对应,需要name、object
参数,这里多了一个userInfo
,该参数可以把你需要携带的数据发送给该通知的响应者。
移除通知
//移除该响应者的全部通知
[[NSNotificationCenter defaultCenter] removeObserver:self];
//移除该响应者 name == @"test" 的全部通知
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"test" object:nil];
unregisterFromNotifications:移除通知在dealloc里面调用
NSNotificationCenter声明类
@interface NSNotificationCenter : NSObject
@property (class, readonly, strong) NSNotificationCenter *defaultCenter;
- (void)addObserver:(id)observer selector:(SEL)aSelector name:(nullable NSNotificationName)aName object:(nullable id)anObject;
- (void)removeObserver:(id)observer;
- (void)removeObserver:(id)observer name:(nullable NSNotificationName)aName object:(nullable id)anObject;
@end
文章来源:https://blog.csdn.net/weixin_52259822/article/details/135221426
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!