Вы на самом деле не дали нам слишком много информации, чтобы работать с ней, но я предполагаю, что по какой-то причине ваш метод viewDidLoad
вызывается несколько раз, что приводит к множеству дублирующих таймеров, которые продолжают вызывать ваши repeatRequest
и onTimer
методы.
Возможно, вы захотите взглянуть на то, почему viewDidLoad
может вызываться несколько раз. Также посмотрите здесь . Вы должны предположить, что viewDidLoad
разрешено вызывать более одного раза.
(Чтобы проверить это, просто добавьте NSLog(@"viewdidload");
в ваш метод viewDidLoad
и посмотрите, как часто он вызывается.)
То, что вы действительно должны делать, - это хранить ваши NSTimer
экземпляры как ivars (предположим, они называются timer1
и timer2
соответственно), а затем проверять, существуют ли они уже при вызове viewDidLoad
:
if (!timer1) timer1 = [NSTimer scheduledTimerWithTimeInterval:30.0 target: self selector: @selector(repeatRequest) userInfo: nil repeats: YES];
if (!timer2) timer2 [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];