Ho quasi finito con la mia app e il beta test ha rilevato un bug nella parte del cronometro ... Il cronometro usa un nstimer per fare il conteggio e ha una tabella per memorizzare giri, ma quando si scorre il lap table, l'orologio si ferma o si ferma e non recupera il tempo perduto.NSTimer non si attiva quando il runloop è bloccato
Questa è stata la paralisi è stato eliminato utilizzando:
startingTime = [[NSDate date] timeIntervalSince1970];
per calcolare il tempo trascorso.
ma sto ancora utilizzando il NSTimer per attivare ogni 0.1 secondi e ciò significa che lo scorrimento blocca ancora il timer anche se il tempo trascorso verrà aggiornato correttamente alla fine ... e confrontandolo con il cronometro Apple che fa Mi chiedo se quel cronometro ha una discussione separata solo per il conteggio del tempo trascorso. Qualcuno sa se è così che è fatto?
Ora, utilizzando il tempo dal momento che l'Epoch sta lavorando bene in un certo senso, ma si complica la questione di avviamento, arresto, & riavviare il cronometro
quando l'orologio viene fermato il tempo viene immagazzinato e utilizzato per calcolare un offset per quando l'orologio viene riavviato, ma sembra esserci un po 'di latenza introdotta e il tempo scorre visibilmente quando l'orologio viene riavviato.
Qualsiasi pensiero verso la causa principale o una soluzione sarebbe molto apprezzato.
Ciò non garantisce ancora la precisione del tempo complessivo. I timer non sono garantiti per sparare esattamente al loro intervallo configurato. Peggio ancora, se ogni attivazione del timer si aggiunge all'intervallo complessivo, la quantità di errore aumenterà ad ogni accensione del timer! – bbum
Non intendevo sostenere che avrebbero garantito qualcosa di diverso dai timer che avrebbero sparato mentre i controlli stavano monitorando. Memorizzare la data all'inizio del giro e utilizzarla per calcolare il tempo trascorso è molto più accurata (e più semplice IMO) che hai indicato nella risposta. –
+1 ha funzionato per me. la risposta di bbum non aveva alcun senso per me. – bentford