2012-08-06 6 views
2

현재 사운드 파일을 정확한 간격으로 재생해야하는 앱을 개발 중입니다. 기간은 다양합니다.NSTimer 정확도

NSTimer는 지정된 기간 후에 실행되는 작업이 아니라 지정된 지속 시간 후에 작업을 스택에 배치한다는 사실을 기억하는 것 같습니다. 이것은 이전에 스택에 다른 연산이 많이 있다면 시간에 호출되지 않는다는 것을 의미합니다.

이것이 실제로 정확한지 알고 싶습니다. 그렇다면 지정된 기간 후에 작동하도록 보장 할 수있는 방법이 있습니다.

사운드 파일이 처음으로 지연 될 수 있다는 의견이 있으면 먼저이 파일이 미리로드되어 미리 설치되지 않도록하십시오. first paragraph of Apple's NSTimer documentation에서

+2

흥미로운 토론 http://stackoverflow.com/questions/4485072/accurate-timing-in-ios – CSmith

+1

도움이 될 수 있습니다. http://stackoverflow.com/questions/3368169/accurate-music-grade-timing- of-audio-playback – Adam

+0

@Adam 화려한 링크 - 이것은 내가 프로젝트에서하고있는 것과 정확히 같습니다. –

답변

5

이를 찾을 수 있습니다 :

을 타이머가 실시간 메커니즘 아니다; 타이머가 추가 된 루프 모드 인 중 하나가 실행 중일 때만 발생하고 은 타이머의 실행 시간이 경과했는지 확인할 수 있습니다. 일반적인 실행 루프가 다양한 입력 소스로 관리되기 때문에 의 유효 해상도는 타이머의 시간 간격이 50-100 밀리 초 정도의 순서로 제한됩니다. 실행 중 루프가 타이머를 모니터링하지 않는 모드에있는 동안 긴 콜 아웃 중에 타이머의 실행 시간이 발생하거나 인 경우 실행 루프가 타이머를 확인할 때까지 타이머가 시작되지 않습니다. 따라서 타이머가 실제로 실행되는 실제 시간은 예약 된 실행 시간 이후 상당한 시간 인 일 수 있습니다.

그래서 당신은 확실히 실행 (또는 경우에, 당신의 사운드를 재생) 예정된 발사 시간 이후 ,하지만 반드시 정확하게 에서 당신의 시간됩니다.