Я делаю именно эту вещь.в моем appdelegate у меня есть метод для таймера и потоков (я удалил потоки для простоты):
-(void)startupThreadsAndTimers{
//updatetime
timer = [NSTimer scheduledTimerWithTimeInterval:(1)
target:self
selector:@selector(updateTime)
userInfo:nil
repeats:YES];
}
, и у меня есть метод, который таймер вызывает
-(void)updateTime{
[[NSNotificationCenter defaultCenter] postNotificationName: @"PULSE" object: nil];
}
в методе "awakefromnib" класса appdelgate у меня есть это:
[self startupThreads];
Теперь в методе veiwdidload для контроллеров представления, которые должны подписаться на это (чтобы обновить часы), я подписываюсь на центр уведомлений:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateTimeLeft) name:@"PULSE" object:nil];
И у меня есть метод с именем "updateTimeLeft"
Это работает очень хорошо, но я вернусь к нему, чтобы позже использовать потоки для небольшой производительности.
Чтобы объекты запускались с разными интервалами, вы можете изменить эти селекторы для анализа значения времени, а контроллеры представления с подпиской используют модуль, чтобы решить, что делать.
т.е.
switch (timerValue % 15){
case 1:
[self someMethod];
break;
case 2:
[self someOtherMethod];
break;
}
Надеюсь, это поможет:)