Мой таймер не останавливается, даже если я делаю «invalidate» и «nil» после прочтения других ссылок. Мой код, как показано ниже:NStimer не останавливается на invalidate
@property(nonatomic,strong) NSTimer *mytimer;
- (void)viewDidLoad {
[self performSelectorOnMainThread:@selector(updateProgressBar:) withObject:nil waitUntilDone:NO];
<do some other work>
}
- (void) updateProgressBar :(NSTimer *)timer{
static int count =0;
count++;
NSLog(@"count = %d",count);
if(count<=10)
{
self.DownloadProgressBar.progress= (float)count/10.0f;
}
else{
NSLog(@"invalidating timer");
[self.mytimer invalidate];
self.mytimer = nil;
return;
}
if(count <= 10){
NSLog(@"count = %d **",count);
self.mytimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateProgressBar:) userInfo:nil repeats:YES];
}
}
1) Таймер продолжает infinetly даже при недействительности таймер еще условие попал после того, как число> 10 и счетчик продолжает приращением.
2) Я хочу сделать это на основной теме. Я хочу продолжить в viewdidload() после запуска таймера. Как это сделать?
Я посетил другие ссылки на SO, все, что я понял, было вызвать invalidate и nil на указателе таймера. Я все еще сталкиваюсь с проблемами. Может ли кто-нибудь сказать мне, что я здесь отсутствует, и что я могу сделать, чтобы запустить updateProgressBar в фоновом потоке и обновить индикатор выполнения?
oops! Да, вы абсолютно правы. Пропустил эту часть. – CodeTry
Просьба также предложить, как запустить таймер на фоне и обновить индикатор выполнения? – CodeTry