通知注意事项
- 一定要记得移除通知
- 一定要在发布通知之前监听通知
- 开发中的万能步骤:无论在哪个线程中发布通知,都在监听通知代码中获取主队列去更新UI
多线程中使用通知
监听通知的两种方式
监听通知方式一
在子线程监听通知,在子线程发布通知,通知代码在子线程中执行
在主线程监听通知,在子线程发布通知,通知代码在子线程中执行
在主线程发布通知,那么通知代码在主线程中调用
总结:在哪个线程中发布通知,监听通知后要调用的方法就在哪个线程中执行,也就是只与发布线程有关
// 监听通知:方式一
/*
Observer:谁观察通知
selector:监听到通知,就会调用这个方法
name:通知名称
object:谁发出通知
*/
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reciveNote) name:@"note" object:nil];
- 监听通知方式二
// 监听通知 方式二
/*
name:通知名称
object:谁发出通知
queue: 确定Block在哪个线程调用 队列,传入nil,block就会直接运行在发布通知线程中
通常传[NSOperationQueue mainQueue],因为在这里可能会做一些刷新UI的操作
usingBlock:只要监听到通知,就会自动调用这个block
*/
_observer = [[NSNotificationCenter defaultCenter] addObserverForName:@"note" object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
NSLog(@"%@",self);
NSLog(@"%@",[NSThread currentThread]);
NSLog(@"调用了block:监听到通知");
}];