我在iOS上遇到了奇怪的线程问题。考虑一个这样的简单方法:
- (BOOL)doSomething
{
[self doA];
[self doB];
}
此方法仅在主线程的上下文中运行。我需要从工作线程调用此方法。我为此目的使用performSelectorOnMainThread
。
如果我按照此处的说明执行所有操作。可以在doA
和`doB
之间进行上下文切换吗?
(我不这么认为,我只是想确保我的理解就在这里)
答案 0 :(得分:1)
通过“上下文切换”我假设您的意思是主线程切换到其他主线程事件(因为您可以随时切换到另一个工作线程)。
但是,主线程将在执行任何其他操作之前完成所有doSomething。
摘自performSelectorOnMainThread:
此方法将消息排入主线程的运行循环 使用常见的运行循环模式 - 即与之相关的模式 NSRunLoopCommonModes常量。 作为正常运行循环的一部分 处理时,主线程将消息出列(假设是 在一个常见的运行循环模式中运行)并调用所需的 方法。从同一个线程多次调用此方法会导致 相应的选择器排队并在同一个中执行 拨打电话的顺序。