본문 바로가기
💡 Today I Learned/오류 잡아라!

[오류] 테이블뷰 이벤트 발생 시 UI 작업이 중단되는 현상(스톱워치)

by 솔비님 2024. 8. 20.

 

 

오류내용

아래 영상과 같이 스톱워치에서 랩 기록 후 테이블뷰 스크롤 시 타이머가 중단됨!!

 

 

애플 공식문서를 확인해보니어떤 스레드에서 작업할지 설정 가능한 DispatchSourceTimer가 있다고 함

https://developer.apple.com/documentation/dispatch/dispatchsourcetimer

 

DispatchSourceTimer | Apple Developer Documentation

A dispatch source that submits the event handler block based on a timer.

developer.apple.com

 

 

나는 지금 Timer을 이용해서 스톱워치 작업을 했는데 일단 바꿔줌

<변경 전>
<변경 후>

 

 

오류 발생

 

 

이벤트 발생 시 타이머가 중단되지 않게하기 위하여

타이머는 글로벌 스레드에서 돌아가고, UI 작업인 텍스트는 메인 스레드에서 돌아가게 설정

 

 

DispatchSourceTimer는 .invalidate() 메서드가 존재하지 않아 변경해줌

 

 

 

엥 오류발생

 

 

resume()으로 호출을 안 해줘서 그런거였다

 

 

잘됨 하하