-1

我可能会误解该函数的作用runMode:beforeDate:,但为什么它似乎永远运行(至少超过 10 秒设置)。

NSRunLoop *theRL = [NSRunLoop currentRunLoop];
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:10];
while ([theRL runMode:NSDefaultRunLoopMode beforeDate:date]) {
    NSLog(@"in loop %d %@ %@", [theRL runMode:NSDefaultRunLoopMode beforeDate:date], date, [NSDate date]);
}
4

1 回答 1

1

因为你在它周围放了一个循环。(实际上每个循环调用它两次,因为你在调用中再次调用它NSLog()。)

-runMode:beforeDate:YES如果运行循环有任何源或计时器,则返回。运行运行循环为这些源和计时器提供服务,但不会删除或“消耗”它们。所以,如果你循环一次,你很可能会永远循环。(如果从运行循环中删除了所有输入源和计时器,您的while循环将退出,但您不能依赖它。框架可能会将您无法控制的源或计时器添加到运行循环。)

你想做什么?你为什么要运行运行循环?

于 2013-11-01T07:00:53.693 回答