我可能误解了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]);
}
答案 0 :(得分:1)
因为你绕了它。 (实际上,每次循环都会调用它两次,因为您在NSLog()
调用中再次调用它。)
-runMode:beforeDate:
返回YES
。运行运行循环为这些源和计时器提供服务,但不会删除或“消耗”它们。所以,如果你循环一次,你可能会永远循环。 (如果从运行循环中删除了所有输入源和定时器,则while
循环将退出,但您不能依赖它。框架可能会将您无法控制的源或定时器添加到运行循环中。)
你想做什么?你为什么还要运行run loop?