Flutter

ViewController의 생명주기

flutter developer 2024. 5. 6. 15:34

답변 요약

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를 업데이트할 때 사용해라.