首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用NSRunLoop和performSelector?

如何使用NSRunLoop和performSelector?
EN

Stack Overflow用户
提问于 2015-07-30 05:37:11
回答 1查看 605关注 0票数 0

我正在尝试弄清楚NSRunLoop是如何工作的。所以有一些延迟的任务,我想使用NSRunLoop在几秒钟内执行它们。我想手动创建NSRunLoop。我该怎么做呢?

代码语言:javascript
复制
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]]);

而且我还得想办法阻止这个循环。正如你所看到的,我完全迷惑了,这里的许多苹果文档和主题对我没有帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-07-30 13:06:43

对于Q和评论:

当然,它们永远不会被执行。-performSelector:…被附加到线程的当前运行循环中。这个run循环永远不会到达,因为您的程序陷入了您的私有run循环中。

此外,将run循环附加到线程是不可能的:

您的应用程序既不能创建也不能显式管理NSRunLoop对象。每个NSThread对象,包括应用程序的主线程,都有一个根据需要自动创建的NSRunLoop对象。如果需要访问当前线程的run循环,可以使用类方法currentRunLoop来实现。

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSRunLoop_Class/index.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31711609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档