2009-02-26 36 views
0

我在這裏做錯了什麼?我錯過了什麼?Custom RunLoop模式

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

回答

5

您是否正在運行該模式的runloop?如果runloop永遠不會在該模式下運行,只需添加計時器將不會執行任何操作。

1

難道是currentRunLoop只能在普通模式下運行嗎?

你也應該嘗試: - (BOOL)runMode:(的NSString *)模式beforeDate:(NSDate的*)limitDate

,並檢查其中的內容有: - (的NSString *)CURRENTMODE

- -Tom