본문 바로가기

Tech/iOS

[iOS] Day13 - ViewController 생명주기

728x90

주말 맞이 멍 때리는 중

주말이 오면 긴장이 풀려서 그런지

나른하다

 

오늘도 달려보자


UIViewController 생명주기

화면이 표시되기 전부터 제거된 후 까지의 생명주기를 의미한다 

 

 

init

viewController 객체가 생성됨

 

loadView

View를 메모리에 로드

 

ViewDidLoad

View의 Controller가 메모리에 로드된 뒤 호출

화면이 표시되기 전 초기화하는 작업

-> View의 로딩이 완료 되었을 때  

시스템에 의해 자동으로 호출

리소스를 초기화하거나 초기화면을 구성하는 용도

화면이 처음 만들어질 때 한번 실행

처음 한번만 실행해야하는 초기화 코드 있을 경우

메소드 내부에 작성

 

viewWillAppear

View가 표시되기 직전에 호출

화면 전환 시 View가 전환될 때  호출

 

viewDiadAppear

View가 표시된 후 호출

 

viewWillDisappear

View가 사라지기 직전 호출

화면 전환 시 바뀔 화면으로 전환 되기 직전에 호출

 

viewDidDisappear

View가 사라지기 직후 호출

화면 전환 시 바뀔 화면으로 전환 되기 직후에 호출

 

viewDidUnload

View가 메모리에서 해제된 뒤 호출

 

 

예제 

 

앱에 뷰를 처음 띄웠을 때

viewDidLoad 실행 후 viewWillAppear viewDidAppear가 실행된다 

 

그 후 두번째 화면으로 화면전환을 했을 때

 

두번째 화면에서 viewDidLoad가 실행되고 

첫번째 뷰는 viewWillDisappear 실행 후 두번째 View가 viewWillAppear한 후 viewDidDisappear한다

그 후 두번째 View는 viewDidAppear한다

 

다시 첫번째 뷰로 화면전환을 해보자

viewDidLoad가 실행이 안된체 viewWillDisappear -> viewWillAppear -> viewDidDisappear -> viewDidAppear가 실행되는 것을 볼 수 있다

viewDidLoad는 화면 전환시 현재 네비게이션 컨트롤러에 rootView여서 한번만 호출되기 때문

 

 

참고 : https://zeddios.tistory.com/43