✅⠀런 루프(Run Loops)란?
- RunLoop 객체는 소켓, 파일, 키보드 마우스 등의 입력 소스를 처리하는 이벤트 처리 루프로, 쓰레드가 일해야 할 때는 일하고, 일이 없으면 쉬도록 하는 목적으로 고안되었다.
- RunLoop 입장에서 Timer는 입력이 아닌 특수한 유형이지만, Timer의 이벤트 또한 처리한다.
- Thread는 모두 각자의 RunLoop를 가진다.
- Thread를 생성할 때 RunLoop가 자동으로 생성되지만 자동으로 실행되진 않는다.
- RunLoop.current로 현재 Thread에 대한 런루프를 얻을 수 있따.
- MainThread는 자동으로 RunLoop를 실행시키지만 Global Thread의 RunLoop는 자동으로 실행되지 않는다.
- Timer는 런 루프에서 작동하는데 MainThread에서 돌리는게 안전하다고 한다.
- Input Source를 통해 다른 Thread와 통신하는 경우, Timer를 사용해야하는 경우