[iOS/Swift] Run Loop - (1 / 2)

2023. 8. 20. 15:48·IOS - Swift
반응형
  • 💡레이아웃 이해하기 -1 RunLoop 편

 

런루프 애플문서

공식문서

런루프란?

RunLoop 객체는 소켓, 파일, 키보드 마우스 등의 프로그래밍 입력 소스를 처리하는 이벤트 처리 루프이다.

 


RunLoop 객체는 창 시스템 및 Port 객체와 같은 소스에서 마우스 및 키보드 이벤트를 처리합니다. 또한 RunLoop 객체는 Timer 이벤트도 처리합니다.

애플리케이션은 RunLoop 객체를 생성하거나 명시적으로 관리하지 않습니다. 시스템은 각 Thread 객체에 필요한 경우 RunLoop 객체를 생성하며, 애플리케이션의 메인 스레드도 포함됩니다. 현재 스레드의 run loop에 액세스해야 하는 경우 클래스 메서드 current를 사용하세요.

RunLoop의 관점에서 볼 때, Timer 객체는 "입력"이 아닌 특별한 유형인 점에 유의하세요. Timer 객체는 발생할 때 run loop가 반환되도록하진 않습니다.

 

어… 대충 생각해보면 사용자의 입력소스를 받아서 이벤트를 처리하는 과정이고 Timer를 같이 처리한다 라는것 같습니다. 예시를 통해서 살펴보겟습니다.

RunLoop는 Thread의 외부 입력 소스 및 Timer를 처리할 때 사용됩니다.

하지만 공식문서상에서 말하는것은

모든 Thread 는 각자의 RunLoop 를 가질수 있는가? - O

Thread를 생성할 때 RunLoop가 같이 생성되는가 -X

Current 메서드를 사용할때 생성후 반환이라고 작성되어 있습니다. 즉, current를 사용해서 런루프에 접근할때 RunLoop가 없으면 해당 시점에서 생성됩니다.

→ 이어지는 내용이지만 런루프가 있더라도 자동으로 실행되는것은 아니며 입력 소스나 Timer를 통해서 직접 실행해야 합니다. (Main Run Loop 제외)

즉, 내가 생성한 Thread 에 대한 RunLoop를 직접 얻어서 실행시켜주어야 합니다.

이를 직접 얻기 위해서는 다음과 같이 current 메서드를 이용합니다.

Class var current: RunLoop { get }

이 메서드를 사용하기 위해서는

let runLoop = RunLoop.current

이와같은 방식으로 현재 쓰레드에 대한 런루프를 얻을수 있습니다.

(대충 이런식으로 좌라락 나옵니다)

해당 쓰레드에 대한 런루프가 이미 있을 경우 그 런루프를 가져오고, 런루프가 없다면 런루프를 새로 생성해서 반환합니다.

하지만 실행 결과에서 알수 있듯이 내가 RunLoop를 얻엇더라도 입력소스, 타이머를 처리해주지 않습니다.

 

 

 

 

 

-2부에서 계속

 

 

출처

 

반응형

'IOS - Swift' 카테고리의 다른 글

[iOS/Swift] BottomSheet 구현하기 - 라이브러리 사용  (1) 2023.09.10
[iOS/Swift] Run Loop ( 2 / 2 )  (1) 2023.08.27
[iOS/Swift] UIkit image Resizing ( 크기 / 품질)  (1) 2023.08.06
[iOS/Swift] Dependency Injection, 의존성 주입이란?  (1) 2023.07.30
Managing the view hierarchy 에 관하여 - 1  (0) 2023.07.02
'IOS - Swift' 카테고리의 다른 글
  • [iOS/Swift] BottomSheet 구현하기 - 라이브러리 사용
  • [iOS/Swift] Run Loop ( 2 / 2 )
  • [iOS/Swift] UIkit image Resizing ( 크기 / 품질)
  • [iOS/Swift] Dependency Injection, 의존성 주입이란?
게게겍
게게겍
열심히 공부해보고 있습니다
  • 게게겍
    코더라도 되어보자
    게게겍
  • 전체
    오늘
    어제
    • 분류 전체보기
      • IOS - Swift
        • UIkit
        • SwiftUI
        • Combine
      • 혼자 공부한거
      • inflearn
      • 기타
      • 일기
      • firebase
      • CS
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    INTERNAL
    viewBuilder
    #GDSC #캐치카페 #대관 # 대학생 #취준생 #진학사
    combine
    flatMap
    Swift
    UIViewRepresentable
    map
    subscription
    SwiftUI
    compactMap
    replacemap
    UICollectionView Custom Cell with Horizontal Scroll
    private
    swift openapigenerator
    fileprivate
    trymap
    uikit
    UIHostingController
    scan
    open
    launchscreen
    ios
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
게게겍
[iOS/Swift] Run Loop - (1 / 2)
상단으로

티스토리툴바