방금 앱을 끝내고 베타 테스트가 스톱워치 부분의 버그를 발견했습니다 ... 스톱워치는 nstimer를 사용하여 계산을하고 랩을 저장하기위한 테이블을 가지고 있지만 랩 테이블이 스크롤되면 시계가 멈추거나 멈추고 잃어버린 시간을 만회하지 않습니다.runloop이 차단되었을 때 NSTimer가 실행되지 않음
는이를 이용하여 제거 하였다 실속 하였다
startingTime = [[NSDate date] timeIntervalSince1970];
은 경과 시간을 계산.
그러나 여전히 NSTimer를 사용하여 매 0.1 초를 트리거하고 있습니다. 즉, 경과 시간이 올바르게 업데이트 될지라도 스크롤이 여전히 멈추는 것을 의미합니다 ... 그리고 이것을 Apple 스톱워치와 비교합니다 그 초시계에는 경과 된 시간 계산을위한 별도의 스레드가 있는지 궁금합니다. 그게 어떻게 이루어 졌는지 아는 사람 있습니까?
신기원 한 의미에서 잘 작동하기 때문에 시간을 이용하여 지금,하지만 시계가 저장되는 시간을 중지하고 계산하는 데 사용됩니다 스톱워치
를 다시 시작, 시작, & 정지의 문제를 복잡하게 시계가 다시 시작될 때의 오프셋이지만 시계가 다시 시작될 때 약간의 대기 시간이 도입되고 시간이 눈에 띄게 증가합니다.
근본 원인이나 해결책에 대한 생각은 크게 감사하겠습니다.
여전히 전체 타이밍의 정확성을 보장하지는 않습니다. 타이머는 설정된 간격으로 정확히 발사되는 것이 보장되지 않습니다. 더욱이, 각 타이머 발사가 전체 간격에 추가되면, 각 타이머 발사마다 오류 양이 증가합니다! – bbum
나는 통제가 추적하는 동안 타이머가 발사하는 것 이외의 다른 것을 보장 할 것이라고 주장하려고하지 않았다. 랩 시작시 날짜를 저장하고이를 사용하여 경과 시간을 계산하면 답안에 명시된 것보다 훨씬 정확하고 간단합니다. –
+1 나를 위해 일했습니다. bbum의 대답은 나에게 전혀 이해가되지 않았다. – bentford