Несколько NSTimers в приложении - PullRequest
0 голосов
/ 23 марта 2012

Я выполняю некоторую операцию, используя NSTimer и запускаю 3 NSTimers в главном потоке в appDelegate .Повлияет ли это на производительность приложения с точки зрения скорости?

1 Ответ

1 голос
/ 23 марта 2012

Таймеры очень низкие накладные расходы. Я не думаю, что вы увидите какой-либо эффект вообще. Если частоты порядка нескольких секунд, вы можете сделать то же, что и я, для приложения, которое заботилось о нескольких разных временных интервалах: один NSTimer запускается каждую секунду, а затем проверяет и уведомляет по модулю всех, кто заботится о каждой частоте.

- (void)secondsTimerFired:(NSTimer *)timer {

    NSDate *now = [NSDate date];
    NSInteger nowInterval = (NSInteger)[now timeIntervalSinceReferenceDate];

    [[NSNotificationCenter defaultCenter] postNotificationName:@"SecondsTimerFired" object:self];

    if (nowInterval % 5 == 0) {
        [[NSNotificationCenter defaultCenter] postNotificationName:@"Second_5_TimerFired" object:self];
    }

    if (nowInterval % 12 == 0) {
        [[NSNotificationCenter defaultCenter] postNotificationName:@"Second_12_TimerFired" object:self];
    }
}

Еще одним преимуществом было то, что у меня было одно место и один таймер для аннулирования и перезапуска активных / неактивных событий приложения.

...