我有一个线程,这线程首先是在a类中创建,并调用a类的a1方法,而a1方法又调用了b类的b1方法。
我在c类中,想向该线程发通知,希望其调用b类的b2方法,
我的代码:
[self performSelector:@selector(b2) onThread:m_thread withObject:nil waitUnitilDone:NO];
提示:unrecognized selector to instance 0x14450aa20
请问这里该如何修改?
我有一个线程,这线程首先是在a类中创建,并调用a类的a1方法,而a1方法又调用了b类的b1方法。
我在c类中,想向该线程发通知,希望其调用b类的b2方法,
我的代码:
[self performSelector:@selector(b2) onThread:m_thread withObject:nil waitUnitilDone:NO];
提示:unrecognized selector to instance 0x14450aa20
请问这里该如何修改?
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
你已经正确地使用了performSelector:onThread:方法来执行你的操作。但是,如果你想要在主线程上等待这个操作完成后再返回,则可以这样写:
dispatch_async(dispatch_get_main_queue(), ^{
self.performSelector:@selector(b2) onThread:m_thread withObject:nil waitUnitilDone:NO;
});
在这个例子中,dispatch_get_main_queue()函数会将当前调度到主线程。然后,在performSelector:waitUntilDone:函数中,我们将回调函数设置为@selector(b2)并传递给m_thread对象。最后,我们设置了waitUnitilDone参数为NO,这意味着当b2方法完成后,才会继续执行后续的操作。