NSRunLoop??

Aske
2 min readApr 22, 2019

얼마 전 면접간에 런루프에 대한 질문을 받은 적이 있습니다.

늘 사용해오던 것인데, 이론적으로 어떻게 정리해서 이야기해야할지 정리가 안돼는 경험을 한 후 개념 정리 겸 Runloop에 대한 정리를 해보려고 합니다.

먼저 Apple Document 에 정의된 내용은 대략 위와 같습니다.

  • 입력 소스를 관리하는 객체에 대한 프로그래밍 인터페이스
  • NSThread 생성 시 자동으로 생성되며, currentRunLoop 메소드를 통해 접근이 가능하다.
  • 완벽히 thread safe하지 않으므로, runloop 실행중에 다른 스레드를 호출하지 말아야 한다.

역시 애플 문서만 가지고는 잘 이해가 가지 않습니다..

인터넷을 뒤져보니 많은 추천을 받은 answer가 있어 발췌해 보았습니다.

https://stackoverflow.com/questions/12091212/understanding-nsrunloop

Thread와 함께 생성된 runloop는 각종 이벤트에 대한 핸들링을 처리하는 추상화 입니다. runloop에서 이벤트가 발생하면 해당 발생 이벤트에 대한 핸들링을 수행하고, 수행이 종료되면 “대기” 상태로 기다리게 됩니다.

정리해보면 다음과 같습니다.

“앱 구동간에 생성되는 Thread와 함께 생성되어 해당 Thread가 수행해야 할 이벤트들을 핸들링하여 적절한 수행을 요청하고, 이벤트 처리가 종료되면 대기 상태로 접어들어 다음 이벤트에 대한 모니터링을 해주는 추상화”

라고 저는 이해를 하였습니다.

혹시 잘못된 정보나 궁금한 사항이 있으시면 댓글로 남겨주세요~

감사합니다.

--

--