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,因为它提供了与其他问题不同的关键词。否则我就删除它。