ios - PerformSelector 延迟为 0?

标签 ios objective-c dynamic-dispatch

Possible Duplicate:
How does -performSelector:withObject:afterDelay: work?

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

[obj performSelector:@selector(go) withObject:nil afterDelay:0];

但是它有什么作用?

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

最佳答案

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

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

关于ios - PerformSelector 延迟为 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14717691/

相关文章:

ios - 在 ViewController 之间共享网络数据模型的设计模式

iphone - 子类化 UIViewControllers View

javascript - 动态调用extjs类中的函数

oop - 如何通过查看程序集来判断程序是否使用动态调度

ios - 带有填充可见屏幕区域的单元格的静态表格 View

ios - UICollectionView Objective-c 的长按点击手势识别器

ios - BFTASK中的方法即使完成任务也会被延迟

iphone - 将委托(delegate)添加到自定义 UITableView

objective-c - 如何在 NSValueTransformer 中进行字符串操作?

具有多态性的 C# Func<Interface>