【问题标题】:Custom RunLoop Mode自定义 RunLoop 模式
【发布时间】:2009-02-26 21:17:13
【问题描述】:

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

- (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 的文档似乎表明可以创建自定义运行循环模式。我错过了什么吗?

(这是在 Mac OS X 中标准 GUI 应用程序的主线程上)


更新:请注意,我提到这是在标准应用程序的主线程上。因此,我自己没有运行 runloop。这一切都由 NSApplication 处理。

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    您是否正在为该模式运行运行循环?如果 runloop 从未在该模式下运行,则仅添加一个计时器将无济于事。

    【讨论】:

      【解决方案2】:

      会不会是currentRunLoop只运行在普通模式下?

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

      并通过以下方式检查: - (NSString *)currentMode

      --汤姆

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-01
        • 2018-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多