IOS NSNotificationCenter 的使用

  在Android中,为了解耦各个模块的耦合度,我们会使用很多方式,当然最简单而且效率最高的方式就是使用事件总线的方式进行消息分发,但是Android中并没有自带的消息分发机制,需要使用第三方库,比如EventBus、otto、或者自己实现,甚至最近开始流行使用RxJava去实现EventBus。

但是在IOS中,有自带的NSNotificationCenter可以使用。这里简单记录下NSNotificationCenter的使用方法。

1、添加观察者 NSNotificationCenter是一种典型的观察者模式,我们第一步需要去添加观察者

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(action:) name:@"notifyName" object:nil ];

 其中第一个参数为需要接收消息的类引用,第二个selector参数接收到消息后所调用的方法,此处会调用[self action:] name参数为消息的名称,是一个NSString类型,这个消息名称就是唯一区分消息的标志,object参数如果不填写nil,那该观察者就只会接受指定object发来的消息,而过滤其他object发来的消息为name的所有消息。

2、发送消息

[[NSNotificationCenter defaultCenter] postNotificationName:@"notifyName" object:self userInfo:userInfo];

 在任何地方调用该方法后,会向第一步注册的观察者发送一个notifyName消息,object参数为发送者,也可不填,在此处并不关心,userInfo参数为该消息所带的参数,是一个NSDictionary类型。这个方法可能会有人刚开始的时候将object参数误认为是消息参数,其实并不是。

3、取消观察者

任何注册了观察的地方,在该观察者马上就要被释放前,或者coder认为该对象不应该继续接收该消息的时候,应该及时取消该观察者

[[NSNotificationCenter defaultCenter] removeObserver:self];

 或

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"notifyName" object:nil];

 

你可能感兴趣的:(IOS NSNotificationCenter 的使用)