Ios 延迟为0的PerformSelector?

Ios 延迟为0的PerformSelector?,ios,objective-c,dynamic-dispatch,Ios,Objective C,Dynamic Dispatch,可能重复: 我经常使用以下代码让UI在调用长时间运行的方法之前完成其业务: [obj performSelector:@selector(go) withObject:nil afterDelay:0]; 但是它做什么呢? 我个人的解释一直是,在下一次运行循环时调用go方法,但这肯定是不对的。延迟调用0确实会在下一次运行循环时调用此方法 IIRC,它所做的是设置一个表示目标和操作的结构,并将CFRunLoopSource附加到runloop,该runloop在触发时将调用目标上的操作。然后它

可能重复:

我经常使用以下代码让UI在调用长时间运行的方法之前完成其业务:

[obj performSelector:@selector(go) withObject:nil afterDelay:0];
但是它做什么呢?


我个人的解释一直是,在下一次运行循环时调用
go
方法,但这肯定是不对的。

延迟调用
0
确实会在下一次运行循环时调用此方法


IIRC,它所做的是设置一个表示目标和操作的结构,并将
CFRunLoopSource
附加到runloop,该runloop在触发时将调用目标上的操作。然后它向runloop发出信号,告诉它有一个就绪的源。这意味着下一次运行循环处理其源时(即下一次通过运行循环),它将执行延迟选择器。

请参见此处:谢谢Tom,这很有效。我是否应该删除这个问题(删除)?@Nate:是吗?世界跆拳道联盟。当知道提问者是否不太可能将任何问题标记为已回答时,这是非常有用的。我有点希望它被当作一个傻瓜关闭,@Nate,因为它提供了与其他问题不同的关键词。否则我就删除它。