【发布时间】:2011-08-17 16:22:38
【问题描述】:
我需要一个保存的方式来说:“iOS,我希望这个方法能够立即执行,但不在本次运行循环迭代中。最早在下一次,但请不要在本次中。谢谢。”
现在我总是这样:
[self performSelector:@selector(doSomethingInNextRunLoop) withObject:nil afterDelay:0];
[self doSomeOtherThings];
假设-doSomeOtherThings 将始终在之前执行
-doSomethingInNextRunLoop.
文档说:
指定延迟为 0 并不一定会导致选择器 立即执行。选择器仍然在线程的队列中 运行循环并尽快执行。
所以基本上它可能会立即调用该方法,就好像我刚刚发送了一条直接消息,导致-doSomethingInNextRunLoop 在-doSomeOtherThings 之前执行?
我怎样才能绝对确定它会被称为 a.s.a.p。但从来没有在同一个运行循环迭代中?
为了澄清措辞:运行循环是指主线程,以及所有方法必须返回的迭代,直到线程再次为新事件做好准备。
【问题讨论】:
标签: iphone ios ipad nsobject performselector