View Drawing Cycle

변화가 있을때마다 매번 View의 모든 컨텐츠를 다시 그리는 것은 비효율

→ 따라서 iOS의 View는 업데이트할 컨텐츠가 생기면 즉각 그리지 않고 다음 drawing Cycle을 기다렸다가 한번에 그 내용을 그린다!

Main Run Loop vs update Cycle

크게 두 가지 상태로 나눌 수 있다.

Main Run Loop: 사용자의 터치 이벤트나 뷰의 레이아웃을 인식하는 상태

update Cycle: Main Run Loop에서 인식한 변경사항을 update 해주는 상태

→ 뷰의 레이아웃을 변경하는 부분에 값이 많이 들기 때문에 update Cycle은 짧게 존재

→ iOS는 초당 60프레임 → update cycle 1/60초

Untitled

Drawing Cycle

<순서>

1️⃣ View가 화면에 로드되면, 시스템이 UIView에게 draw 메소드를 통해 드로잉을 요청

2️⃣ 시스템은 이 컨텐츠의 스냅샷을 캡쳐하고, 해당 스냅샷을 View의 시각적 표현으로 사용

3️⃣ View의 컨텐츠 변경 시 관련 메서드 호출하여 시스템에 업데이트 요청 (아래서 봅시다!)

4️⃣ Next Drawing Cycle에서 업데이트 요청 받은 뷰를 업데이트

View/Layout update 메소드

애플 공식문서에서는 ”View의 실제 컨텐츠가 변경될 때, View를 다시 그려야함을 시스템에게 알리는 것은 당신의 책임입니다” 라고 말하고 있다.

→ 즉 drawing Cycle 중 우리가 컨텐츠가 변화했다는 것을 시스템에게 알려야 반영이 됨!