我希望能够block
在下一次运行循环迭代中执行 a 。它是在下一个运行循环的开始还是结束时执行并不那么重要,只是延迟执行,直到当前运行循环中的所有代码都执行完。
我知道以下内容不起作用,因为它与主运行循环交错,因此我的代码可能会在下一个运行循环上执行,但可能不会。
dispatch_async(dispatch_get_main_queue(),^{
//my code
});
我认为以下内容与上述问题相同:
dispatch_after(DISPATCH_TIME_NOW, dispatch_get_main_queue(), ^(void){
//my code
});
现在我相信以下内容会起作用,因为它被放置在当前运行循环的末尾(如果我错了,请纠正我),这真的有效吗?
[self performSelector:@selector(myMethod) withObject:nil afterDelay:0];
有0
间隔的计时器呢?文档指出:If seconds is less than or equal to 0.0, this method chooses the nonnegative value of 0.1 milliseconds instead.
这是否转化为保证下一次运行循环迭代的执行?
[NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(myMethod) userInfo:nil repeats:NO];
这就是我能想到的所有选项,但我仍然没有更接近在下一次运行循环迭代中执行一个块(而不是调用一个方法),并保证它不会更早。