[iOS] ViewController 생명주기

ungchun·2022년 6월 22일
0
post-thumbnail

iOS 개발의 기본이 되는 ViewController, 그래서 우리는 View Contorller를 잘 다루기 위해서 꼭 생명주기를 알고 있어야한다. 공부 겸 정리하는 차원에서 ViewController 생명주기에 대해 정리해보려 한다.

보통 화면을 구성하면 여러개의 화면으로 구성한다. 각 뷰들은 뷰컨을 가지고있고 이 뷰컨들은 각자 생명주기를 가지고 있다.

그림으로 표현하면 이러한 생명주기를 가지게 된다. 각자 하나씩 살펴보자.


loadView

뷰를 로드하거나 생성하는 역할을 한다. 공식문서에서는 재정의하거나 직접 호출하지 말라고 적혀있으니 우리는 사용할 일이 없다.


viewDidLoad

viewDidLoad 는 뷰 컨트롤러가 뷰 계층 구조를 메모리에 로드한 후에 (뷰 로딩완료) 호출되며 시스템에 의해 자동으로 호출됩니다.

화면이 만들어질때 단 한번만 실행되므로, 초기 화면을 구성하거나 처음 한번만 실행해야하는 초기화코드가 있으면 viewDidLoad에 작성하면 된다.


viewWillAppear

viewWillAppear 는 뷰가 화면에 나타나기 직전에 호출이 됩니다. 쉽게 설명하면 뷰가 이제 화면이 나타날거라고 알려주는 컨트롤러입니다.

1번 호출하는 viewDidLoad랑은 다르게 뷰가 화면에 나타날때마다 호출이 되기 때문에 보통 다른 뷰 갔다가 다시 돌아왔을 때 처리하고 싶은 작업이 있으면 viewWillAppear에서 많이 처리합니다.


viewDidAppear

viewDidAppear 는 뷰가 화면에 나타난 직후 호출이 되고 화면에 필요한 애니메이션을 그려줍니다.

추가적으로 필요한 애니메이션 작업이 있으면 viewDidAppear 에서 처리합니다.


viewWillDisappear

viewWillDisappear 는 뷰가 사라지기 직전에 호출됩니다. 화면이 전환되기전에도 호출됩니다.


viewDidDisappear

viewDidDisappear 는 뷰가 사라지고 난 직후에 호출됩니다.

뷰가 사라지고 나서 필요없어지는 (멈춰야하는) 작업들을 viewDidDisappear 에서 처리합니다. 예를들면 notification을 듣는 행위를 멈추기, 다른 객체의 속성을 observing하는것을 멈추기, 디바이스의 센서를 점검하거나 네트워크를 호출하는 행위들은 화면이 사라지고 나서는 필요 없는 작업들입니다. [이동건의 이유있는 코드]


0개의 댓글