EDIT
(Так же, как я опубликовал это, я заметил, что вы знаете, приняли вышеприведенный ответ и, похоже, удалили ваш комментарий «не работает» для ответа от @Firoze Lafeer. Но я оставлю это здесь в любом случае.)
Запуск приведенного ниже кода в качестве теста Я не понимаю вашу проблему. И даже когда я не сделал недействительной, я просто получил несколько выходов в журнале.
Вместо того, чтобы видеть, что происходит, смотрите на то, что делает текстовое поле в приложении. Попробуйте использовать протоколирование, как показано ниже, чтобы понять, дает ли это вам лучшее представление о происходящем.
-(IBAction)runTimer:(id)sender { // attached to a button
[self invalidateTimer];
count=15; //timer set as 15 seconds
//for decrementing timer
countimer = [NSTimer scheduledTimerWithTimeInterval:1.0f
target:self
selector:@selector(updateCounter:)
userInfo:nil
repeats:YES];
}
-(void)updateCounter:(NSTimer *)theTimer {
count -= 1;
NSLog (@"count =@%d", count);
if(count==0) // alert for time expiry
{
[self invalidateTimer];
}
}
-(void)invalidateTimer {
if ([countimer isValid]) {
[countimer invalidate];
NSLog(@"countimer invalidated ");
countimer = nil;
}
}