[iOS] ViewController Lifecycle 뷰컨트롤러 라이프사이클 - ViewController의 생명 주기

Bibi·2022년 2월 18일
0

ViewController Lifecycle 뷰컨트롤러 라이프사이클 - ViewController의 생명 주기

https://zeddios.tistory.com/43

뷰 컨트롤러의 생명주기는 "보여졌다" -> "사라졌다" 의 주기이다.

뷰 컨트롤러의 생명주기는 뷰 하나하나에 각각 적용된다.


  • init
  • loadView
    • 컨트롤러가 관리하는 뷰를 '만드는' 역할
    • loadView가 뷰를 만들고 메모리에 올린 후에 viewDidLoad가 호출된다.
    • 오버라이딩 후에는 super.loadView()와 같이 호출해야 한다. self.loadView()와 같이 호출해서는 안 된다!
  • viewDidLoad
    • 뷰가 로드되었다.
    • 프로젝트 생성 시 ViewController.swift에 보이는 첫 번째 메소드.
    • 뷰의 컨트롤러가 메모리에 로드된 후 호출된다. (Called after the controller's view is loaded into memory)
    • 뷰의 로딩이 완료되었을 때 시스템에 의해 자동으로 호출되며, 처음 한 번만 실행됨
      • 일반적으로 리소스 초기화, 초기화면 구성 등의 용도로 사용
  • viewWillAppear
    • 뷰가 나타날 것이다
    • 뷰가 나타나기 직전에, 그 사실을 뷰컨트롤러에게 알리는 역할
    • viewDidLoad와의 차이 : viewDidLoad는 처음 한 번만 실행되지만, viewWillAppear는 뷰가 나타나기 직전마다 실행된다.
      • 따라서 viewDidLoad 는 앱의 초기화 작업에, viewWillAppear는 뷰가 나타나기 전에 처리해야 할 작업에 사용한다.
  • viewDidAppear
    • 뷰가 나타났다
    • 뷰가 화면에 나타난 직후에 실행됨.
    • 뷰가 나타났음을 뷰컨트롤러에게 알리는 역할. 또 화면에 적용될 애니메이션을 그리는 역할.
  • viewWillDisappear
    • 뷰가 사라질 것이다
    • 뷰가 사라지기 직전에 호출됨.
    • 뷰가 삭제될 것임을 뷰컨트롤러에 알리는 역할.
  • viewDidDisappear
    • 뷰가 사라졌다
    • 뷰가 삭제되었음을 뷰컨트롤러에 알리는 역할.
  • viewDidUnload

뷰컨트롤러에서 각 메서드를 오버라이딩하고, print(#file, #line, #function, #column)

예를 들어 첫 번째 뷰 (1) -> 두 번째 뷰 (2)로 넘어간다고 할 때,

  • (1) viewDidLoad
  • (1) viewWillAppear
  • (1) viewDidAppear (화면에는 첫 번째 뷰가 보임)
  • --- (두 번째 뷰로 넘어가는 버튼 클릭) ---
  • (1) viewWillDisappear
  • (2) viewDidLoad
  • (2) viewWillAppear
    • (두 번째 뷰 보여질 준비가 되고 나서)
  • (1) viewDidDisappear
    • (첫 번째 뷰가 사라지고)
  • (2) viewDidAppear
    • (화면에 두 번째 뷰를 보여준다.)
  • --- (다시 첫 번째 뷰로 넘어가는 버튼 클릭) ---
  • (2) viewWillDisappear
  • (1) viewWillAppear
    • (viewDidLoad는 처음 한 번만 실행되므로, 돌아갈 때는 viewWillAppear가 실행됨)
  • (2) viewDidDisappear
  • (1) viewDidAppear

0개의 댓글