通知中心
NSNotificationCenter
•什么是通知中心
•顾名思义,通知中心就用来通知事情
•那在oc里通知中心是用来传递消息的
•发送消息,传递消息
通知中心是 Foundation 框架的一个子系统,它向应用程序中注册为某个事件观察者的所有对象广播消息(即通知)。(从编程角度而言,它是 NSNotificationCenter
类的实例)。该事件可以是发生在应用程序中的任何事情,例如进入后台状态,或者用户开始在文本栏中键入。通知是告诉观察者,事件已经发生或即将发生,因此让观察者有机会以合适的方式响应。通过通知中心来传播通知,是增加应用程序对象间合作和内聚力的一种途径。
NSNotificationCenter是一个单例模式,而这个通知中心的对象会一直存在于一个应用的生命周期,也是说整个应用就会存在一个通知中心,发送者只有一个,而接收者可以有众多。
创建通知中心
NSNotificationCenter* nc=[NSNotificationCenter defaultCenter];
消息类型
@interface NSNotification : NSObject <NSCopying, NSCoding>
- (NSString *)name;
- (id)object;
- (NSDictionary *)userInfo;
@end
name是通知的名字 object发送通知的对象,userInfo是要传递的信息
发送消息
- (void)postNotification:(NSNotification *)notification;
- (void)postNotificationName:(NSString *)aName object:(id)anObject;
- (void)postNotificationName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo;
根据需要调用不同的发送方法,比如不用传值就不用最后一个
接收(注册)
- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject;
有发送肯定有接收啦,这个方法就是在你要接收通知的类里实现,给当前对象注册通知,并且收到通知就会调用selector里我们自己写的方法
移除通知
- (void)removeObserver:(id)observer;
- (void)removeObserver:(id)observer name:(NSString *)aName object:(id)anObject;
当前对象如果不用了,要释放了,就要在当前类里移除通知,一般在
- (
void
)dealloc这个方法里写
实例以后再上