通知中心(NSNotificationCenter)总结

2016-08-21  本文已影响80人  学而不思则罔思而不学则殆

一、简介

1. NSNotification 理解

NSNotification

@property (readonly, copy) NSString *name;
@property (readonly, retain) id object;
@property (readonly, copy) NSDictionary *userInfo;

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

2.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进行初始化

3. 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,实现传值。


二、试用.

VC里面获取通知中心单列对象,同时添加观察者 LC_VC里面创建通知发送通知 结果 这么看清晰

三.总结

NSNotificationCenter 是使用观察者模式来实现的用于跨层传递消息. 定义对象间的一种一对多的依赖关系. 当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并自动更新.

上一篇 下一篇

猜你喜欢

热点阅读