꾸준한 기록

[iOS] Main Run Loop 와 UI Update cycle 본문

iOS

[iOS] Main Run Loop 와 UI Update cycle

Doo혀니 2024. 9. 9. 22:23

Main Run Loop

1. 앱이 시작될 때, UIKit이 @main 을 찾아서 실행

2. @main이 실행되면, UIApplication 인스턴스와 UIApplicationDelegate 인스턴스를 생성하고, 둘을 연결

3. 앱의 Main Run Loop를 시작

 

Main Run Loop 동작방식

  • UI 이벤트가 들어오면, queue에 쌓인다. Main Run Loop는 queue에서 작업을 꺼내서 처리
  • queue에서 작업을 꺼내서, 애플리케이션의 객체에(Application Object)에 전달.
  • 애플리케이션 객체는 UI 이벤트를 해석해서 이것을 처리할 Core Object에게 전달. 이때 CoreObject의 핸들러가 호출되면서 개발자들이 쓴 코드가 호출됨.
  • CoreObject의 처리가 끝나면, 다시 실행권한이 Main Run Loop에게로 돌아가서 Update Cycle이 시작됨.
  • Update Cycle은 View를 다시 그리는 역할을 함.

Update Cycle 동작방식

  • Update Cycle이란? 화면을 다시 그리는 작업이다.
  • Main Run Loop이 뷰 업데이트가 필요한 경우, Update Cycle을 시작한다.
  • 화면을 다시 그린다? View의 사이즈와 위치 계산 (레이아웃), 보여주는 작업(display), 제약을 거는 작업(Constraint)
  • 이벤트 핸들러가 실행되는 과정에서 우리가 UIView에 변화를 준다면, 해당 뷰는 다시 그려져야 한다고 (redraw) 표시됨. 그리고 Update Cycle에서 다시 그리는 작업을 수행함
  • ⚠️ 이로 인해서, 이벤트가 처리되는 시점과 View가 다시 그려지는 시점이 달라진다.

 

 

참고 자료

 

 

Demystifying iOS Layout

Some of the most difficult issues to avoid or debug when you first start building iOS applications are those dealing with view layout and content. Often, these issues happen because of misconceptions about when view updates actually occur. Understanding ho

tech.gc.com

 

 

[번역] iOS 레이아웃의 미스터리를 파헤치다

iOS의 UIView가 그려지는 과정과 메소드들을 살펴봅니다.

medium.com