답변 요약
VC 생명주기는 크게 6단계가 있습니다.
순서 | 메서드명 | 역할 |
1 | loadView | 뷰를 메모리에 올리는 과정으로 뷰를 바꿀 수 있는 시점 |
2 | viewDidLoad | 스토리보드 뷰들과의 연결이 끝난 시점으로 뷰가 생성되었을 때 한 번만 호출 |
3 | viewWillAppear | 실제 스크린에 뷰가 나타나기 전에 호출된다 (뷰가 화면에 나타날 때마다 호출) |
4 | viewIsAppearing | 뷰가 계층 구조에 추가되어 정확한 모양(size, safe area)을 가졌을 때 호출 (wwdc23 에서 소개된 메서드로 뷰가 띄워져있을 때 UI를 업데이트하기 최적의 장소) |
5 | viewDidAppear | 실제 스크린에 뷰가 나타난 후에 호출 |
6 | viewWillDisappear | 실제 스크린에 뷰가 사라지기 전에 호출 |
7 | viewDidDisappear | 실제 스크린에 뷰가 사라진 후에 호출 다만 메모리에서 없어지는 것은 아님 |
부가 설명
상황별로 어떤 생명주기 메서드를 쓰면 좋을지 알아보자
노티 수신을 위한 옵저버 등록 코드
- viewDidLoad() - 옵저버 등록은 한번만 하면 되니깐
노티 수신 중단을 위한 구독 중단 코드
- viewDidDisappear or deinit - 뷰가 화면에서 내려가면(없어지면) 중단!!
스토리보드로 구성한 뷰 요소의 초기값을 설정하는 코드
- viewDidLoad() - 메모리에 올라갈 때 한번만 하면 되기 때문에 configureUI() 머 이런거 말이져
배경음악을 중지할 코드
- viewWillDisappear() - 화면이 사라지기 직전에 음악이 중지되어야 하기 때문에
배경음악을 재생할 코드
- viewDidAppear() - 화면이 나타났을 때 음악이 재생되어야 하기 때문에
뷰에 보여질 데이터를 불러오는 코드
- viewWillAppear() - 화면이 보여질 때마다 데이터가 보여져야 하기 때문에
사용자 환영 애니메이션을 보여주는 코드
- viewDidAppear() - 애니메이션 처음부터 실행되어야하기 때문에
중요!
ViewIsAppearing은 traits, geometry(size, safe area, and so forth)가 최신 상태이므로 View를 업데이트할 때 사용해라.
'Flutter' 카테고리의 다른 글
| Combine | 3. Transforming Operators (0) | 2024.05.08 |
---|---|
| Combine | 2. Operators and Subjects (0) | 2024.05.07 |
| Combine | 1. Getting Started (0) | 2024.05.05 |
UserDefaults 를 사용할 때 객체에 Codable 을 채택한 이유 (0) | 2024.05.05 |
| WWDC 19 | Introducing SwiftUI - Building Your First App (0) | 2024.04.23 |