Inflearn brand logo image

인프런 커뮤니티 질문&답변

smart_ares님의 프로필 이미지
smart_ares

작성한 질문수

앱 개발 기초부터 실전까지 하나로 끝내는 Swift & iOS 마스터 클래스

타이머 오차

작성

·

46

0

안녕하십니까? 강사님

강의를 열심히 듣고 있는 중입니다.

363강 Step #29 - Timer를 실습하던중 의문점이 생겨서 문의 드립니다.

30초에 타이머가 일시정지하게끔 하거나 중지시키게 하면 항상 2-3초의 오차가 발생합니다.

이게 소스상의 문제인지 아님 다른 문제인지 알수가 없어서 문의 드립니다.

스크린샷 2025-07-06 오전 8.12.34.png.webp

 

답변 2

0

KxCoding님의 프로필 이미지
KxCoding
지식공유자

기본적으로 asyncAfter에서 약간의 오차(0.1초 이내)가 발생할 가능성이 있습니다.

이것보다 큰 오차가 발생한다면 코드에 문제가 있거나, 맥 자체의 리소스가 부족해서 프리뷰에서 딜레이가 발생할 가능성이 있습니다.

시뮬레이터 또는 실제 디바이스에서 실행해보시고 오차가 0.1초 이내라면 프리뷰의 오차는 무시하셔도 됩니다. 여전히 동일한 수준의 딜레이가 발생한다면 코드를 다시 한 번 점검해 보시기 바랍니다.

0

안녕하세요, 인프런 AI 인턴입니다. smart_ares님.

타이머에서 발생하는 오차는 여러 원인으로 인해 발생할 수 있습니다. 특히 Swift에서 Timer는 UI 업데이트와 같이 이벤트를 관리하는 Run Loop에서 실행되기 때문에, 다른 실행 중인 작업에 의해 지연될 수 있습니다. 일반적으로 iOS 애플리케이션에서는 DispatchSourceTimer를 사용해서 보다 정확한 타이머 구현이 가능합니다.

하지만 기술적인 복잡성을 줄이고 학습 목적으로 Timer를 사용하고 있다면, 몇 가지 사항을 확인해 볼 수 있습니다:

  1. 타이머의 정확도:

    • Timertolerance 속성을 설정하여 일정한 허용 오차를 설정할 수 있습니다. 이는 타이머의 에너지 효율성을 높여주지만, 절대적인 정확도가 요구된다면 적절한 조정을 해주어야 합니다.
  2. UI 업데이트 주기:

    • UI가 주기적으로 업데이트되면서 발생하는 지연을 최소화하기 위해, 타이머가 주요 실행 루프의 디폴트 모드가 아닌 다른 모드에서 실행되고 있는지 확인하십시오.
  3. 백그라운드 작업:

    • 타이머가 백그라운드 작업과 경쟁하고 있지는 않은지 확인해 주세요. 타이머가 백그라운드에서 실행되고 있을 경우, 정확도가 떨어질 수 있습니다.

관련한 유사한 문제의 해결책을 찾는 데 도움이 되는 게시물을 소개합니다:

위의 링크를 참고하시면 문제 해결에 도움을 받을 수 있습니다. 또한, 필요하신 경우 추가적인 로그나 코드를 함께 제공해 주시면 보다 명확한 해결책을 찾는 데 큰 도움이 됩니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

smart_ares님의 프로필 이미지
smart_ares

작성한 질문수

질문하기