我需要一种保存方式说:“iOS,我希望这个方法尽快执行,但不要在本次运行循环迭代中。最早在下一次,但请不要在本次中。谢谢。”
现在我总是这样做:
[self performSelector:@selector(doSomethingInNextRunLoop) withObject:nil afterDelay:0];
[self doSomeOtherThings];
假设-doSomeOtherThings
将始终执行 BEFORE
-doSomethingInNextRunLoop
。
文档说:
指定延迟为 0 不一定会导致选择器立即执行。选择器仍在线程的运行循环中排队并尽快执行。
所以基本上它可能会立即调用该方法,就好像我刚刚发送了一条直接消息,导致-doSomethingInNextRunLoop
之前执行-doSomeOtherThings
?
我怎样才能绝对确定它会被尽快调用,但永远不会在同一个运行循环迭代中调用?
为了澄清措辞:对于运行循环,我指的是主线程,以及所有方法必须返回的迭代,直到线程再次为新事件做好准备。