본문 바로가기
iOS/iOS

[iOS] ViewController의 생명주기(Life Cycle)

by 원만사 2021. 12. 12.
반응형

View Contoller의 생명주기

 앱은 보통 하나 이상의 화면들로 구성되어 있다. 즉 앱에는 하나 이상의 'View Controller'가 존재하는 것이다. 각각의 뷰 컨트롤러는 생명주기를 갖고 있다. 여기서 생명주기라는 것은 각각의 뷰 컨트롤러가 화면에 나타나거나 사라지는 것을 의미한다. 뷰 컨트롤러의 생명주기는 다음과 같다.

View Controller의 Life Cycle

  • Appearing : 뷰가 화면에 나타나는 중
  • Appeared : 뷰가 화면에 나타나는게 완료된 상태
  • Disappearing : 뷰가 화면에서 사라지는 중
  • Disappeared : 뷰가 화면에서 사라진 상태

 

 각각의 상태로 변경될 때 위의 그림에 표시된 메서드가 iOS 시스템에 의해 자동으로 호출된다. 각각의 의미에 대해서 살펴보자.

 

viewDidLoad()

  • 위의 그림에서는 보이지 않지만 뷰 컨트롤러를 생성했을 때 자동으로 생성되어 있는 메서드이다.
  • 해당 뷰가 메모리에 로드되었을 때 호출되는 메서드이다.
  • 보통 딱 한번 호출될 행위들을 여기에 작성한다.
  • 일반적으로 로드된 뷰에 대해 추가적인 초기화 작업을 수행할 때 해당 메서드를 재정의하여 사용한다.

 

viewWillApear(_:)

  • 뷰가 이제 화면에 나타날 거라는 신호를 컨트롤러에게 알리는 역할을 하는 메서드이다.
  • 해당 뷰가 화면에 표시되기 전에 처리해야 하는 작업을 여기에서 하면 된다. 예를 들어 화면이 보여지지 않는 동안 변경된 데이터 업데이트 등이 이에 해당한다.
  • 뷰 컨트롤러가 화면에 나타날 때마다 반복 실행된다.

 

viewDidAppear(_:)

  • 뷰 컨트롤러에게 해당 뷰가 뷰의 계층 구조에 추가되었음을 알리는 메서드이다. 
  • 즉, 뷰가 화면에 나타났음을 말한다.
  • 뷰가 화면에 나타난 즉시 발생해야 하는 작업을 여기에 작성하면 된다.

 

viewWillDisappear(_:)

  • 뷰 컨트롤러에게 해당 뷰가 뷰의 계층 구조에서 제거되려 함을 알리는 메서드이다.
  • 뷰가 생성된 뒤 발생한 변화를 이전 상태로 되돌리기 좋은 시점이다.
  • 최종적으로 데이터를 저장하는 작업을 해당 메서드에 정의한다.

 

viewDidDisappear(_:)

  • 뷰 컨트롤러의 뷰가 뷰 계층에서 사라진 뒤에 호출되는 메서드이다.
  • 뷰가 사라지는 것과 관련된 작업을 해당 메서드에 정의한다.

 

참고

- https://developer.apple.com/documentation/uikit/uiviewcontroller

- https://velog.io/@delmasong/Understand-the-View-Controller-LifeCycle

- https://zeddios.tistory.com/43

 

 

반응형

댓글