RunLoop란 소켓, 파일, 키보드 마우스 등의 입력 소스와 타이머를 처리하는 이벤트 처리 루프.
타이머는 입력이 아니지만 특별한 타입이며 타이머 이벤트가 발생해도 RunLoop가 리턴되지 않는다.
모든 Thread는 RunLoop를 가질 수 있고 RunLoop.current를 통해 접근될 때 생성되고 실행도 직접시켜줘야 한다.
단 Main Thread는 애플리케이션이 실행될 때 자동으로 RunLoop를 생성하고 실행하며 이를 Main RunLoop라고 한다.
RunLoop 클래스는 일반적으로 스레드에 안전하지 않으므로 현재 스레드의 컨텍스트 내에서만 메서드를 호출해야 한다.
RunLoop는 한 번 실행되면 이벤트를 가져와서, 이에 대한 핸들러를 수행하고 대기상태에 들어간다. 계속해서 이벤트를 처리하려면 반복적으로 실행시켜야 한다.
- func run()
- func run(mode: RunLoop.Mode, before: Date) -> Bool
- func run(until: Date) - 반복적으로 RunLoop를 실행할 때 주로 사용
- func acceptInput(forMode: RunLoop.Mode, before: Date)
출처
https://babbab2.tistory.com/68
iOS) 런 루프(RunLoop) 이해하기
안녕하세요 :) 소들입니다 오늘은 RunLoop라는 것에대해 공부를 해볼 건데여 음... 내용이 좀 어려울 수도 있어여!! 저도 오랜만에 다뤄서 완전히 이해하고 쓰는 내용이 아니라... (한 1년 전에 공부
babbab2.tistory.com