iOS/SwiftUI
SwiftUI 동작 방식
Hamp
2025. 10. 18. 20:53
반응형

SwiftUI 작동 원리 파악하기
먼저 Sample 코드를 통해, 동작흐름을 천천히 살펴보자.
🤖 Sample Code
struct ContentView: View {
@State var isOn = true
var body: some View {
Text(isOn ? "On" : "Off")
}
}
📊 Attribute Graph
🧩 역할
- 데이터 모델
- 뷰 계층구조, 상태 의존성, 뷰 업데이트의 효율성을 관리하는 내부시스템
- 어떤 값이 바뀌었을 때, 어떤 뷰를 다시 그려야하는 지 계산하는 의존성 그래프
🌊 흐름
Attribute 관련

- SwiftUI는 View 구조체를 저장하는 상위 View에서 Attribute 객체를 수신
- View 구조는 자주 재생성
- Attribute는 View 전체 수명에서 Identity와 State를 유지
트랜잭션


- 트랜잭션은 SwiftUI View 계층 구조의 변경 사항으로써, 다음 프레임에 적용할 내용을 나타냄
- 트랜잭션은 State 변수의 signal attribute을 Outdated(만료된) 것이라고 마크함
- 프레임을 업데이트할 준비가되면, 트랜잭션을 실행하고, 예정된 업데이트를 진행
- Attribute Graph를 따라가며, 관련있는 내용들 모두 Outdated(만료된) 마크 처리한다.
업데이트


- 상위 뷰가 업데이트 되면, 상태는 업데이트되지만 Identity는 유지됨
- SwiftUI는 View는 변경 즉시, 업데이트 하지 않음
- 대신 새로운 transaction(트랜잭션)을 생성함
- Outdated(만료된) 내용 중, State의 signal attributes처럼 Outdated(만료된) 종속성이 없는 것부터 차례대로 업데이트를 진행
- 위 내용을 보면, 다음과 같은 결론으로 귀결됨
왜 View Body가 실행 됐는가? == View Body가 왜 만료(Outdated)로 마크 된 건가?
View

- 뷰는 자체 attribute를 생성해 상태를 저장
- 뷰는 먼저 isOn 상태 변수를 위한 저장소와 isOn 상태 변수가 변경됐을 때, 추적하는 signal attribute을 생성
- 뷰는 이 두가지를 기준으로 body을 실행하는 새로운 속성을 생성함
- body는 새로 그리라는 요청을 받으면, 상위 뷰로부터 전달받은 State값을 읽는다.
- attribute는 상태 변수의 현재 값으로 해당 VIew 구조체 사본을 업데이트한다.
Body

- VIew body에서 우리는 Text를 리턴하기로 했다.
- Text는 Environment에 따라, 색깔 서체등을 지정해, 렌덜링 한다.
- 이 과정에서, Body에서 Text로 종속성이 추가된다.
출처
https://developer.apple.com/videos/play/wwdc2025/306
반응형