DirTy™의 하루일과/DirTy™의 가당찮은iOS

[IOS] View Life Cycle

DirTy™ 2015. 3. 24. 14:22

뷰 컨트롤러에서 뷰의 라이플 사이클에 관하여 기록해 놓는다.
life cycle 의 순서는 의외로 중요하다. 어디에서 그 동작을 해야 유연하게 적용이 되며
화면이 refresh됐을때 불리우는 함수들 등 어디에서 호출을 해야하는지 생각을 할때 꼭 필요하다.

View의 life cycle과 관련한 인스턴스 메서드가 호출 되는 시점은 다음과 같다.

  • didReceiveMemoryWarning - 컨트롤러가 메모리 경고를 받았을 때
  • didRotateFromInterfaceOrientation - 컨트롤러의 뷰가 회전했을 때
  • loadView - 컨트롤러 뷰가 생성될 때
  • viewDidAppear - 컨트롤러 뷰가 나타난 직후
  • viewDidDisappear - 컨트롤러 뷰가 사라진 직후
  • viewDidLoad - 컨트롤러 뷰가 메모리에 로드된 직후
  • viewDidUnload  - 컨트롤러 뷰가 메모리에 해제된 직후
  • viewWillAppear  - 컨트롤러 뷰가 나타난 직전
  • viewWillDisappear   - 컨트롤러 뷰가 사라지기 직전
  • willRotateToInterfaceOrientation:duration - 컨트롤러의 뷰가 회전하기 시작할 때
  • didRotateFromInterfaceOrientation -  컨트롤러의 뷰가 회전다된 직후

즉 뷰가 로드되는 사이클은 다음과 같다.

  1. loadView
  2. viewDidLoad
  3. viewWillAppear
  4. viewDidAppear

다른 메서드와는 viewDIdUnload는 그 시점이 약간 특이하다. 위 설명에 viewDIdUnload의 시점을 추가하면 다음과 같다.

  1. viewController 의 view 가 nil 로 세팅될때 
  2. didReceiveMemoryWarning 메서드 후에

즉, viewDidUnload에서는 viewController와 관련한 뷰 객체에(IBOutlet 객체) 대해서만 메모리 해제를 하는 메서드로 이용하는 것이 좋다.


자료 참조

http://www.cyworld.com/won2oppa