我在这里做错了什么?我错过了什么?
- (void)scheduleTimer
{
NSTimer *timer = [NSTimer timerWithTimeInterval:0.15
target:self
selector:@selector(wtf:)
userInfo:nil
repeats:NO];
// This works fine
// [[NSRunLoop currentRunLoop] addTimer:timer
// forMode:NSDefaultRunLoopMode];
// This doesn't work at all - how come?
[[NSRunLoop currentRunLoop] addTimer:timer
forMode:@"MyCustomRunLoopMode"];
}
- (void)wtf:(NSTimer *)aTimer
{
NSLog(@"wtf");
}
NSRunLoop的文档似乎表明可以创建自定义的runloop模式。我错过了什么吗?
(这是Mac OS X中标准GUI应用程序的主线程)
更新:请注意,我提到这是在标准应用程序的主线程上。因此,我自己并没有运行runloop。这一切都由NSApplication处理。
答案 0 :(得分:5)
您是否在运行该模式的runloop?如果runloop永远不会以该模式运行,那么只添加一个计时器就不会做任何事情。
答案 1 :(得分:1)
可能是currentRunLoop只能在常用模式下运行吗?
您还应该尝试: - (BOOL)runMode:(NSString *)mode beforeDate:(NSDate *)limitDate
并查看以下内容: - (NSString *)currentMode
- 汤姆