Вам не нужно использовать несколько таймеров, все, что вам нужно сделать, это добавить переменную для использования в качестве временного интервала, затем создать метод, который делает таймер недействительным, изменяет переменную и снова запускает таймер. Например, вы можете создать метод, запускающий таймер.
int iTimerInterval = 2;
-(void) mTimerStart {
timer = [NSTimer scheduledTimerWithTimeInterval:iTimerInterval target:self selector:@selector(createNewImage) userInfo:nil repeats:YES];
}
-(void) mTimerStop {
[timer invalidate];
iTimerInterval = iTimerInterval + 5;
[self mTimerStart];
}
Это был бы простой способ уменьшить интервал таймера и сохранить его работу, но лично я бы предпочел использовать приведенный ниже, потому что он гарантирует, что таймер запускался только один раз, таким образом, он не будет дублировать экземпляр, заставляя ваш app, чтобы стать глючным, и это также облегчает вам жизнь.
int iTimerInterval = 2;
int iTimerIncrementAmount = 5;
int iTimerCount;
int iTimerChange = 10; //Variable to change the timer after the amount of time
bool bTimerRunning = FALSE;
-(void) mTimerToggle:(BOOL)bTimerShouldRun {
if (bTimerShouldRun == TRUE) {
if (bTimerRunning == FALSE) {
timer = [NSTimer scheduledTimerWithTimeInterval:iTimerInterval target:self selector:@selector(mCreateNewImage) userInfo:nil repeats:YES];
bTimerRunning = TRUE;
}
} else if (bTimerShouldRun == FALSE) {
if (bTimerRunning == TRUE) {
[timer invalidate];
bTimerRunning = FALSE;
}
}
}
-(void) mCreateNewImage {
//Your Code Goes Here
if (iTimerCount % iTimerChange == 0) { //10 Second Increments
iTimerInterval = iTimerInterval + iTimerIncrementAmount; //Increments by Variable's amount
[self mTimerToggle:FALSE]; //Stops Timer
[self mTimerToggle:TRUE]; //Starts Timer
}
iTimerCount ++;
}
-(void) mYourMethodThatStartsTimer {
[self mTimerToggle:TRUE];
}
Я не закончил весь код, но это большая часть того, что вам понадобится. Просто измените несколько вещей, и все будет хорошо!
person
Fernando Cervantes
schedule
10.10.2011