내일배움캠프 13일차

임클·2025년 3월 19일

내일배움캠프

목록 보기
13/44
post-thumbnail

일정


SwiftUI의 .onAppear, .onDisappear, .onChange, .onReceive 정리

1. .onAppear

뷰가 화면에 나타날 때 실행되는 Modifier입니다. 네트워크 요청, 데이터 로드, 초기화 작업 등에 활용할 수 있습니다.

예제 코드

struct ContentView: View {
    var body: some View {
        Text("Hello, SwiftUI!")
            .onAppear {
                print("View appeared!")
            }
    }
}

공식 문서 링크

onAppear - Apple Developer


2. .onDisappear

뷰가 화면에서 사라질 때 실행되는 Modifier입니다. 리소스 정리, 타이머 정지 등에 사용할 수 있습니다.

예제 코드

struct ContentView: View {
    var body: some View {
        Text("Goodbye, SwiftUI!")
            .onDisappear {
                print("View disappeared!")
            }
    }
}

공식 문서 링크

onDisappear - Apple Developer


3. .onChange

지정한 값이 변경될 때 실행되는 Modifier입니다. 상태 값이 변경될 때 특정 작업을 수행할 때 유용합니다.

예제 코드

struct ContentView: View {
    @State private var count = 0
    
    var body: some View {
        VStack {
            Text("Count: \(count)")
            Button("Increment") {
                count += 1
            }
        }
        .onChange(of: count) { newValue in
            print("Count changed to: \(newValue)")
        }
    }
}

공식 문서 링크

onChange - Apple Developer

.onChange vs .onReceive 비교

특징.onChange.onReceive
트리거특정 값(State, Binding 등)이 변경될 때 실행Combine의 Publisher를 구독하고 값이 변경될 때 실행
사용 예시@State 변수가 변경될 때 이벤트 실행Timer, NotificationCenter, Custom Publisher 값 변경 감지
실행 주기값이 변경될 때 한 번 실행Publisher가 새로운 값을 방출할 때마다 실행
주요 차이점SwiftUI 상태 변화 감지외부 이벤트 기반 업데이트

4. .onReceive

Combine의 Publisher를 구독하여 값이 변경될 때 실행되는 Modifier입니다. 타이머, 알림센터(NotificationCenter) 등의 이벤트를 처리할 때 사용할 수 있습니다.

예제 코드

import Combine

struct ContentView: View {
    let timer = Timer.publish(every: 1.0, on: .main, in: .common).autoconnect()
    @State private var timeElapsed = 0
    
    var body: some View {
        Text("Time: \(timeElapsed)")
            .onReceive(timer) { _ in
                timeElapsed += 1
            }
    }
}

공식 문서 링크

onReceive - Apple Developer

0개의 댓글