나는 ios에서 측정 시간과 관련하여 신뢰할 수있는 솔루션을 찾으려고합니다. 나는 1 초의 정밀도로 시간의 경과를 보여주고 싶다. ios에 내장 된 스톱워치와 정확히 같지만 초만 있습니다. NStimer 또는 약간의 사랑 수준 C의 도움으로 폴링을 사용하기 때문에 지금까지 발견 한 모든 해결책은보기 흉하게 보입니다. 내가 가진 문제는 "나는"언제나 시스템에 물어야한다는 것입니다. 그러나 NStimer에 의존해야만한다면 NStimer는 내 측정 값을 신뢰할 수 없습니다. 내 시간을 업데이트 할 시스템에서 호출 된 대리자 메서드가 있습니까? 만약 1ns로 폴링 해상도가 향상 되었다면 괜찮을 것입니다. 하지만 저레벨 C를 사용하여 어떻게 구현해야합니까?ios에서 실시간 시계 받기
0
A
답변
1
나는 당신이 무엇을 목표로하는지 확신하지 못합니다. 고해상도 시간을 쿼리하는 좋은 방법이 필요한지 또는 시스템에서 다시 전화를 걸길 원하는지 파악할 수 없습니다.
전자는 이전 버전 인 경우 고해상도 타이머에 사용합니다.
#import "mach/mach_time.h"
#define TICKS_TO_NANOS(_ticks_, _timebase_) (((_ticks_) * ((_timebase_).numer))/((_timebase_).denom))
#define NOW_IN_TICKS() (mach_absolute_time())
#define NOW_IN_NANOS(_timebase_) TICKS_TO_NANOS(NOW_IN_TICKS(), _timebase_)
후자의 경우에, 당신 수 결코 보장 콜백 타이머를 얻을. 아마도 가장 일관된 타이머 콜백은 CADisplayLink에 연결하는 것이지만, 그래픽 메소드가 너무 오래 걸리면 일관되게 얻지 못할 수도 있습니다.
시스템 타이머를 사용해 볼 수도 있지만 그다지 보장 할 수는 없습니다.
1
iOS 기기는 초당 최대 60 번 디스플레이를 다시 그리기 만하므로 그 이상의 시간은 사용자가 볼 수 없습니다. CADisplayLink를 사용하여 매 프레임 시간, 초당 60 회 전화를 걸고 59 회의 통화를 무시할 수 있습니다. 그러나 표시 속도와 시계 사이의 드리프트를 확인하기 위해 시계 중 하나를 폴링해야합니다 (두 개 이상이 있습니다). 그리고 코드가 UI 실행 루프에서 너무 길어지면 프레임을 놓칠 수 있으므로이를 확인해야합니다.
관련 문제
- 1. 실시간 시계 만들기
- 2. Popen에서 실시간 출력 받기
- 3. iOS에서 SMS 다시 받기
- 4. iOS에서 실시간 오디오 입출력 스트리밍
- 5. iOS에서 시계 알람 정보를 얻는 방법
- 6. iOS에서 잘못된 주 번호 받기
- 7. iOS에서 멀티 플레이어 게임을위한 실시간 메시징
- 8. iOS에서 실시간 푸시 알림을 어떻게 제공합니까?
- 9. 사용자 업데이트를 위해 Facebook에서 실시간 알림 받기
- 10. Facebook 실시간 업데이트 - 친구들을위한 업데이트 받기
- 11. 보내기 후 웹 서비스에서 답변 받기 iOS에서 요청 받기
- 12. PDF 받기 GoTo Quartz로 iOS에서 작업하기
- 13. iOS에서 AVAudioRecorder와 함께 작동하는 헤드셋 마이크 받기
- 14. iOS에서 파일 형식 (오디오 또는 비디오) 받기
- 15. iOS에서 프로그래밍 방식으로 자신의 전화 번호 받기
- 16. ActionScript iOS에서 충돌 호출 스택 받기
- 17. 시계
- 18. iOS에서 사용할 수있는 실시간 선형 위상 EQ가 있습니까?
- 19. iOS에서 맞춤형 실시간 EQ로 음악을 재생할 수있는 프레임 워크가 있습니까?
- 20. iOS에서 실시간 사운드 효과를 만들기 위해 필요한 프레임 워크
- 21. 다각형의 정점 - 시계 방향 또는 시계 반대
- 22. QDial 시계 방향 또는 반 시계 방향으로
- 23. CGAffineTransformIdentity로 반 시계 방향으로 시계 방향으로 변경
- 24. 무력 시계?
- 25. 디지털 시계
- 26. 시스템 시계
- 27. USACO의 시계
- 28. 실시간 실시간 그래프 라이브러리
- 29. Android/iOS에서 Trigger.IO Forge로 기기 전화 번호 받기
- 30. iOS에서 애니메이션을 만들고 싶습니다.
'NSTimer'는이 작업을 수행하는 전통적인 방법이며 1 초의 해상도에서 올바르게 작동합니다. 그것을 사용하지 않을 이유가 있습니까? 특정 문제를 시연하면 도움이됩니다. 또한 C 기반 솔루션을 찾고 있다면 질문에 다시 태그를 답니다. –
그것은 이것을 구현하는 데 나에게 어떤 의미가 없습니다. 나는 그것의 추측을 관리하지만 두 번 생각하는 데는 잘못된 점이 없습니다. 실제 시간을 묻기 위해 NStimer를 1 초 해상도로 설정하면 실제로는 1 초 간격으로 오실 레이팅합니다. 때로는 0.9984 초 ... 1.0055 초 ...에 가끔 물어볼 것입니다. 나는 가장 가까운 1 초로 반올림해야 할 결과를 얻을 것입니다. 결과에 대한 결과는 => 매 초마다 다른 시간이 지속됩니다. 육체적으로 내 눈을 보지 못하겠습니까? 템포가 일정하지 않습니까? –
당신의 뇌가 수십 밀리 초의 불일치를 얼마나 잘 구분하고 있다고 생각하십니까? 그다지 좋지는 않습니다. 나는'NSTimer'를 사용하여 그래픽 타이머를 구현했으며 잘 작동합니다. –