UIViewController Life Cycle

iOS App의 핵심적인 기능을 담당하는 UIViewController에도 고유한 생명 주기(Life Cycle)가 있다.

UIViewController를 Subclassing한 Custom ViewController의 인스턴스가 생성되고 난 뒤부터 메모리에서 해제될 때까지의 생명 주기를 구분하고 있고, 우리는 이 메서드들을 Override해서 필요한 부분에 사용해야 한다.
LifeCycle Methods는 다음과 같다.

  • (void)viewDidLoad
    ViewController의 RootView(self.view)가 메모리에 적재된 후이다. SubView들의 등록, 오토 레이아웃, 각종 프로퍼티들의 초기화 등은 모두 이곳에서 진행하면 된다.
  • (void)viewWillAppear:(BOOL)animated
    viewDidLoad 다음으로 불리우며, ViewController의 RootView가 디바이스 화면에 나타나기 직전에 호출된다.
  • (void)viewWillLayoutSubviews
    RootView의 하위 view 들에 대한 레이아웃이 진행되기 직전에 호출된다.
  • (void)viewDidLayoutSubviews
    RootView의 하위 view 들에 대한 레이아웃이 완료되고 난 후 호출된다.
    RootView를 비롯한 모든 View Hierarchy에 대한 실제 사이즈가 결정된다.
  • (void)viewDidAppear:(BOOL)animated
    RootView와 하위 View들이 디바이스 화면에 나타난 뒤 호출된다.
  • (void)viewWillDisappear:(BOOL)animated
    RootView와 하위 View들이 디바이스 화면에서 사라지기 직전에 호출된다.
  • (void)viewDidDisappear:(BOOL)animated
    RootView와 하위 View들이 디바이스 화면에서 사라지고 난 후 호출된다.
  • (void)dealloc
    ViewController 인스턴스가 메모리에서 해제될 때 호출된다.

dealloc을 제외한 메서드들은 모두 [super view~~~]를 호출해 주어야 한다.
dealloc의 경우에는 꼭 필요한 경우가 아니라면 오버라이드 자체를 하지 않는 것을 추천하며, 꼭 필요한 경우에도 절대로 [super dealloc]을 부르면 안 된다. (객체의 할당 해제는 모두 ARC에 전담해야만 한다)

댓글 남기기