Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

개발자의 삽질

[iOS] 뷰 컨트롤러의 수명 주기 (ViewController LifeCycle) 본문

iOS

[iOS] 뷰 컨트롤러의 수명 주기 (ViewController LifeCycle)

uniqueimaginate 2022. 2. 6. 23:21

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

 

Apple Developer Documentation

 

developer.apple.com


ViewController LifeCycle 에 대해 알아보자!

뷰 컨트롤러의 수명주기는 아래의 그림을 통해 알 수 있다.

4개의 과정으로 나뉘어져 있다.

 

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

위 4개의 과정 가운데 호출되는 메서드들이 있다.

 

viewDidLoad()

  • 뷰 컨트롤러의 모든 뷰들이 메모리에 로드됐을 때 호출
  • 메모리에 처음 로드될 때 한 번만 호출
  • 보통 딱 한번 호출될 행위들을 이 메소드 안에 정의 함
  • 뷰와 관련된 추가적인 초기화 작업, 네트워크 호출

viewWillAppear()

  • 뷰가 뷰 계층에 추가되고, 화면에 보이기 직전에 매 번 호출
  • 다른 뷰로 이동했다가 돌아오면 재 호출
  • 뷰와 관련된 추가적인 초기화 작업

viewDidAppear()

  • 뷰 컨트롤러의 뷰가 뷰 계층에 추가된 후 호출
  • 뷰를 나타낼 때 필요한 추가 작업
  • 애니메이션을 시작하는 작업

viewWillDisappear()

  • 뷰 컨트롤러의 뷰가 뷰 계층에서 사라지기 전에 호출
  • 뷰가 생성된 뒤 작업한 내용을 되돌리는 작업
  • 최종적으로 데이터를 저장하는 작업

viewDidDisappear()

  • 뷰 컨트롤러의 뷰가 뷰 계층에서 사라진 뒤에 호출
  • 뷰가 사라지는 것과 관련된 추가 작업

관련해서 직접 코드를 통해 확인하고 싶다면 아래의 코드를 이용해 보자

override func viewDidLoad() {
    super.viewDidLoad()
    print("ViewController 뷰가 로드 되었다.")
}
    
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    print("ViewController 뷰가 나타날 것이다.")
}
    
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    print("ViewController 뷰가 나타났다.")
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    print("ViewController 뷰가 사라질 것이다.")
}

override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    print("ViewController 뷰가 사라졌다.")
}

 

Comments