0

我试图让这个runloop永远运行(如果不是永远至少一天)我正在使用以下函数进行runloop[self.runLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:100000]];

问题是应用程序在 3 小时后崩溃。有人可以帮我吗?

4

2 回答 2

2

如果您希望它永久运行(并假设您已附加计时器和/或输入源),您可以使用

[self.runLoop run];

如果您想保留当前的构造,可以使用:

[self.runLoop runUntilDate:[NSDate distantFuture]];

我已经看到 Apple 使用了以下模式(例如Threading Programming Guide的清单 3-14 ;我还看到NSOperation对象在调用它们想要等待完成的异步操作时使用此构造):

// Let the run loop process things.
do
{
    [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode
                             beforeDate:[NSDate distantFuture]];
}
while ( ... ); // in here you have whatever condition you want to check for
于 2013-03-21T06:36:19.870 回答
1

试试[NSDate distantFuture]。来自文档:“一个 NSDate 对象,表示遥远未来的日期(以世纪为单位)。”

于 2013-03-21T06:36:54.693 回答