NSNotificationCenter 添加监听通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(noti) name:@"ru" object:nil];
如果有多个对象去监听这个通知,一定要注意顺序
比如 A B C依次监听了这个通知
1` [[NSNotificationCenter defaultCenter] addObserver:A selector:@selector(noti) name:@"functionOne" object:nil];`
2` [[NSNotificationCenter defaultCenter] addObserver:B selector:@selector(noti) name:@"functionTwo" object:nil];`
3` [[NSNotificationCenter defaultCenter] addObserver:C selector:@selector(noti) name:@"functionThree" object:nil];`
那么 [NSNotificationCenter defaultCenter] post 发送通知的时候
A B C接收到的通知是有先后顺序的
尤其是注意 依靠或者修改单利的属性 比如登录的状态。
在B 监听的方法functionTwo中去 修改登录的状态
在A监听的方法functionOne中去判断是否登录 这样会出现问题。
还有通知要注意的一点 通知是分线程的
如果是在子线程发送的通知 只能在这个子线程去接收到通知
比如:在异步操作的回调里 处理子线程发送通知要回到主线程去发送
dispatch_async(dispatch_get_global_queue(0, 0), ^{
//执行完延迟操作有 现在是子线程 要回到主线程发送通知
[NSThread sleepForTimeInterval:2.0];
dispatch_async(dispatch_get_main_queue(), ^{
[[NSNotificationCenter defaultCenter] postNotificationName:@"ru" object:nil];
});
});