ios中的通知和kvo使用非常常见,通常我们都是在主线程添加观察者和发送通知,但是如果我们是在子线程发送通知呢?
测试代码:
接收通知
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notice) name:@"test" object:nil];
}
- (void)notice
{
}
发送通知
- (void)btnOnClick:(id)sender
{
[self performSelectorInBackground:@selector(noticeOnthread) withObject:nil];
}
- (void)noticeOnthread
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"test" object:nil];
}
在- (void)notice 方法内添加断点,我们可以看到,函数执行的线程与发送的线程相同,KVO大家可以自己测试,结果相同,再测试下在子线程添加观察者,主线程发送通知,结果相同