我正在尝试弄清楚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]]);而且我还得想办法阻止这个循环。正如你所看到的,我完全迷惑了,这里的许多苹果文档和主题对我没有帮助。
发布于 2015-07-30 13:06:43
对于Q和评论:
当然,它们永远不会被执行。-performSelector:…被附加到线程的当前运行循环中。这个run循环永远不会到达,因为您的程序陷入了您的私有run循环中。
此外,将run循环附加到线程是不可能的:
您的应用程序既不能创建也不能显式管理NSRunLoop对象。每个NSThread对象,包括应用程序的主线程,都有一个根据需要自动创建的NSRunLoop对象。如果需要访问当前线程的run循环,可以使用类方法currentRunLoop来实现。
https://stackoverflow.com/questions/31711609
复制相似问题