【发布时间】:2015-07-29 21:37:10
【问题描述】:
我试图弄清楚 NSRunLoop 是如何工作的。 所以有一些延迟的任务,我想使用 NSRunLoop 在几秒钟内执行它们。我想手动创建 NSRunLoop 。我该怎么做?
NSRunLoop *loop = [NSRunLoop currentRunLoop];
//create delayed tasks
[object performSelector:NSSelectorFromString(@"firstMethod") withObject:firstArgument afterDelay:5.0];
[object performSelector:NSSelectorFromString(@"secondMethod") withObject:secondArgument afterDelay:3.0];
//and here I must run a loop
while(flag&&[loop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]);
而且我还必须以某种方式停止这个循环。如您所见,我完全感到困惑,这里的许多 Apple 文档和主题对我没有帮助。
【问题讨论】:
-
这是您自己创建的主题吗?你为什么要手动旋转运行循环?您发布的代码有什么问题?
-
@JoshCaswell,这是一个主线程。而且我已经读到不需要创建主线程的运行循环,但正如我所说,我想弄清楚它是如何工作的。至于代码。它在
while中进入无限循环,然后什么也没有发生。 -
主运行循环自动创建和旋转。有时有理由自己旋转它,但这似乎不是。您的
performSelector:...调用将在您不接触运行循环的情况下生效。 -
@JoshCaswell 好的,但是程序的执行速度比预期的延迟任务快。那么如何让它等待
performSelector呢? -
firstMethod和secondMethod调用太快了?
标签: objective-c nsrunloop