自定义RunLoop模式

时间:2009-02-26 21:17:14

标签: objective-c

我在这里做错了什么?我错过了什么?

- (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处理。

2 个答案:

答案 0 :(得分:5)

您是否在运行该模式的runloop?如果runloop永远不会以该模式运行,那么只添加一个计时器就不会做任何事情。

答案 1 :(得分:1)

可能是currentRunLoop只能在常用模式下运行吗?

您还应该尝试: - (BOOL)runMode:(NSString *)mode beforeDate:(NSDate *)limitDate

并查看以下内容: - (NSString *)currentMode

- 汤姆