Estoy a punto de terminar con mi aplicación y las pruebas beta encontraron un error en la parte del cronómetro ... El cronómetro usa un nstimer para contar y tiene una tabla para almacenar vueltas, pero cuando se desplaza la tabla de vueltas, el reloj se detiene o hace una pausa y no compensa el tiempo perdido.NSTimer no se dispara cuando runloop está bloqueado
Esto estaba haciendo tiempo fue eliminada mediante el uso de:
startingTime = [[NSDate date] timeIntervalSince1970];
para calcular el tiempo transcurrido.
pero todavía estoy usando el NSTimer para disparar cada 0.1 segundos y eso significa que el desplazamiento todavía detiene el temporizador aunque el tiempo transcurrido se actualizará correctamente al final ... y comparándolo con el cronómetro de Apple que hace Me pregunto si ese cronómetro tiene un hilo separado solo para el conteo del tiempo transcurrido. ¿Alguien sabe si así es como se hace?
Ahora, utilizando el tiempo desde la Época está funcionando bien en un sentido, pero complica la cuestión de cómo iniciar, detener, & reiniciar el cronómetro
cuando el reloj se detuvo el tiempo se almacena y se utiliza para calcular una compensación para cuando se reinicia el reloj, pero parece que se ha introducido algo de latencia y el tiempo avanza visiblemente cuando se reinicia el reloj.
Cualquier idea sobre la causa raíz o una solución sería muy apreciada.
Eso todavía no garantiza la precisión del tiempo total. No se garantiza que los temporizadores disparen exactamente a su intervalo configurado. Peor aún, si cada disparo de temporizador se suma al intervalo general, la cantidad de error aumentará con cada disparo de temporizador. – bbum
No tenía la intención de argumentar que garantizarían nada más que los temporizadores dispararían mientras los controles estaban rastreando. Almacenar la fecha al inicio de la vuelta y usarla para calcular el tiempo transcurrido es mucho más precisa (y más sencilla) como lo había indicado en su respuesta. –
+1 Funcionó para mí. La respuesta de bbum no tenía ningún sentido para mí. – bentford