NSNotification是iOS中一个调度消息通知的类,使用极为方便,但是劝各位还是慎用,当你日后修改工程的时候,看到密密麻麻的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;
使用流程
- 首先,我们在需要接收通知的地方注册观察者
//获取通知中心单例对象
NSNotificationCenter * center = [NSNotificationCenter defaultCenter];
//添加当前类对象为一个观察者,name和object设置为nil,表示接收一切通知
[center addObserver:self selector:@selector(notice:) name:@"123" object:nil];
- 之后,在我们需要时发送通知消息
//创建一个消息对象
NSNotification * notice = [NSNotification notificationWithName:@"123" object:nil userInfo:@{@"1":@"123"}];
//发送消息
[[NSNotificationCenter defaultCenter]postNotification:notice];
- 我们可以在回调的函数中取到userInfo内容
//回调方法
- (void)notice:(id)sender {
NSLog(@"%@",sender);
}
使用注意
- 添加和移除成组存在,即有添加,就要有移除,一般添加写在ViewDidLoad,移除写在dealloc,或者添加写在ViewWillAppear,移除写在ViewWillDisappear。这里是考虑到左滑且没有退出的情况,我更倾向于前者。
网友评论