运行循环是 Cocoa 版本的事件循环。所以这只是一系列要做的事情。Objective-C 是动态的,因此列表往往是目标和选择器;这不像 Win32 或 Mac Classic Toolbox 等旧的纯静态运行时之一,您需要等待消息结构然后根据消息类型输入一些复杂的分支。
运行循环和线程具有一对一的关系,主运行循环是在主线程上运行的。
总的来说,如果你不考虑任何额外的想法,那么你的所有代码都将出现在主运行循环上,因为提供所有控件的 UIKit 只在主运行循环上工作。
所以,假设你有一个 UIButton 并且它被连接起来调用didPressButton:
then:
- (IBAction)didPressButton:(id)sender
{
// this code is running on the main run loop
NSLog(@"I'm executing on the main run loop");
// when this method ends, control will return to the run loop
}
您可能不想多线程,您可能只想在运行循环上安排。
您可以使用这些performSelectorOnMainThread:
方法从任何地方在主运行循环上安排一些事情。如果您已经在主线程上,您可以使用它performSelector:withObject:afterDelay:
来安排在主运行循环上发生的事情,但只有在已经安排了其他事情之后。您可以传递 0.0 的延迟以使其下一次发生,但也可以给已经安排在下一次发生的任何其他事情运行的机会。
RedPark 的 SDK 仅在您交出您的电子邮件地址后才可用,因此我拒绝这样做;你能给我们更多关于它是如何制定的信息吗?它是阻塞、回调、委托还是其他什么?