您的位置:首页 > 移动开发 > IOS开发

iOS 通知和kvo中的线程问题

2017-02-21 13:20 281 查看

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大家可以自己测试,结果相同,再测试下在子线程添加观察者,主线程发送通知,结果相同

注意:如果在接收通知的函数中有UI操作,请注意当前函数是否是在子线程

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: