Пользовательский режим RunLoop - PullRequest
0 голосов
/ 27 февраля 2009

Что я здесь не так делаю? Чего мне не хватает?

- (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)


Обновление: обратите внимание, что я упоминал, что это было в основном потоке стандартного приложения. Поэтому я сам не запускаю runloop. Все это обрабатывается NSApplication.

Ответы [ 2 ]

5 голосов
/ 27 февраля 2009

Вы запускаете runloop для этого режима? Просто добавление таймера ничего не изменит, если runloop никогда не будет работать в этом режиме.

1 голос
/ 27 февраля 2009

Может быть, currentRunLoop работает только в обычных режимах?

Вы также должны попробовать: - (BOOL) runMode: (NSString *) режим beforeDate: (NSDate *) limitDate

и проверить вещи с: - (NSString *) currentMode

- Том

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...