ViewController LifeCycle

Eli·2021년 2월 7일
2

iOS

목록 보기
2/11

주요 살펴본 레퍼

iOS) ViewController의 특징과 생명주기

[iOS] UIViewController개념과 생명주기(Life Cycle)

Apple Developer Documentation

ViewController

책임

  • 데이터에 변화에 따라 Content와 View를 변경.
  • View를 통한 사용자의 입력에 대응
  • View의 사이즈 변경 및 레이아웃 관리
  • 다른 요소들(다른 ViewController 포함)과 함께 앱을 구성

타입

  • ContentViewController
    • 앱의 Content를 관리하는 ViewController
    • 항상 전체 View를 포함하는 RootView를 최상위로 가짐.
    • 스스로 자신의 하위뷰를 모두 관리한다.
  • ContainerViewController
    • 다른 ViewController를 포함한다.
    • 자신을 포함한 ViewController의 RootView를 관리
    • UINavigationController, UITabbarController 등

아래와 같은 예시의 레이아웃 구조를 가질 수 있음

LifeCycle

위는 ViewController의 LifeCycle의 흐름을 정리한 내용이다.

  1. init(): 클래스를 초기화 해주며 객체를 생성시켜준다.
  2. loadView(): RootView를 생성해주는 단계이다. self.view가 아직 nil이므로 Apple 공식 가이드에 따르면 직접 호출 비권장.
  3. viewDidLoad(): RootView와 IB에서 정의된 View 들이 구현됨. 일반적인 초기화 작업들을 여기서 진행해주면 된다. 앱 생명주기에서 단 한번만 호출된다.
  4. viewWillAppear(): View가 실제로 화면에 보여지기 직전에 호출된다. inactive나 위에 있던 ViewController가 없어져 다시 노출될 때와 같을때 필요한 처리들을 사용.
    또한, 모든 ViewController의 요소가 준비되었기 때문에 API 호출들을 진행.
  5. viewDidAppear(): View가 화면에 보여진 이후. Will 이든 Did이든 적당한 시점에 판단에 따라 사용한다.
  6. viewWillDisappear(): View가 화면에서 사라지기 직전에 호출. 별도로 해당 ViewController에서 돌고 있는 작업들을 닫아줄 필요가 있다면 이곳에서 진행해주면 된다.
  7. viewDidDisappear(): View가 화면에서 완전히 사라진 후 호출됨.
  8. viewDidUnload(): 해당 메소드는 deprecated 되었으며, 해당 시점에 메모리 해제가 필요한 작업들이 있다면 didReceiveMemoryWarning를 호출해 해결해야한다.
profile
애플을 좋아한다. 그래서 iOS 개발을 한다. @Kurly

0개의 댓글