Próbuję użyć NSTimer stworzyć stoper licznik sumujący stylu co 0,1 sekundy, ale wydaje się, że działa zbyt szybko, czasami ..Dokładność NSTimer
ten sposób robiłem go:
Timer =[NSTimer scheduledTimerWithTimeInterval: 0.1 target:self selector:@selector(updateTimeLabel) userInfo:nil repeats: YES];
, a następnie:
-(void)updateTimeLabel
{
maxTime=maxTime+0.1;
timerLabel.text =[NSString stringWithFormat:@"%.1f Seconds",maxTime];
}
Spowoduje to wyświetlenie wartości timera na etykiecie, a później mogę wykorzystać MaxTime jako czas, gdy stoper jest zatrzymany ...
Problem polega na tym, że działa bardzo niedokładnie.
Czy istnieje metoda, dzięki której mogę upewnić się, że NSTimer strzela dokładnie co 0,1 sekundy dokładnie? Wiem, że NSTimer nie jest dokładny i proszę o poprawkę, żeby była dokładna.
THanks
W jakiej metody tworzysz timer? –
Jeśli występują zdarzenia czasowe, należy wywołać 'CFAbsoluteTimeGetCurrent()' po uruchomieniu licznika czasu, a następnie wywołać ponownie pod koniec interwału. Odejmij 2 wartości, a otrzymasz czas, który upłynął w sekundach. – nielsbot
tj. Rzeczywisty czas, który upłynął, jest niezależny od czasu, który wyświetlasz. więc możesz aktualizować swój wyświetlacz mniej więcej co 0,1 sekundy, ale nie ma to znaczenia, jeśli twoje aktualizacje są trochę za małe. Następnie, gdy zegar zostanie zatrzymany, zaktualizuj ekran ponownie, używając metody z mojego ostatniego komentarza. – nielsbot