이번 글에서는 Swift UIKit의 ViewController의 생명주기(Lifecycle)의 모든 기능을 살펴보고자 한다.
ViewController는 보통 Storyboard를 이용하여 생성된다. 이 경우, init(coder:)는 initializer로 호출을 하거나, 사용자가 override하여 사용한다.
NSCoder Instance를 Parameter로 제공하며, iOS serialization API를 사용할 경우에만 필요하다. 이것은 거의 사용되지 않기때문에, 해당 parameter는 무시해도 상관은 없다.
Load View는 ViewController가 code로 생성되었을 때 실행된다. ViewController가 .xib나 storyboard 구성 여부에 상관없이, 자동으로 실행된다.
loadView는 ViewController에 의해 관리된다. View Controller는 loadView를 Main View가아닌 현재의 View가 nil이 되었을 경우 호출된다. loadView() 기본적으로 사용자가 생성한 view를 sub로 가지고 있으며, ViewController의 View(main 또는 super)를 기본으로 설정한다.
스토리보드나 펜촉 파일로 작업하는 경우 이 해당 Method를 통해 작업하는 일이 없기 때문에, 사용하지 않거나 무시해도 된다. UIVIewController에서 구현하면 인터페이스 파일에서 인터페이스를 로드하고 모든 아웃렛과 액션을 연결한다.
해당 Method는 ViewController 생명주기에서 딱 한 번 실행된다. 이것은 모든 뷰가 로드되었을 때 호출된다. Network가 필요에 따라 호출되거나, User Interface 등등이 해당 Method에서 실행될 수 있따.
Note: This Method Call before the bound are defined and rotation happen. So its Risky to work view size in this method.
만약 background activity / UI change / Network 호출 등의 반복적인 작업이 필요한 경우, viewDidLoad나 viewDidAppear를 사용해야 한다.
해당 메소드는 항상 View가 보여지기 전과 애니메이션 기능이 적용되기 전에 사용된다. 사용자는 View의 Displaying과 관련된 작업의 수행을 위해 override하여 특정 기능을 하는 메소드로 정의할 수 있다.