모든 view controller에서 공통되게 적용되는 행동을 정의해둔 class
상속받아서 custom class에 메서드와 프로퍼티를 추가해서 내가 원하는 동작을 구현할 수 있다.
각 View Controller는 뷰의 계층구조를 관리한다.
view 프로퍼티엔 root view가 저장되어있다.
root view
- 최상위의 view.
- 다른 view들을 담는 container
- 사이즈와 위치는 parent viewController와 App의 window에 따라 결정된다.
(항상 디바이스 화면 전체를 채울 수 있는 크기를 유지)
window는 단, 하나의 root viewController만 참조한다. (?)
view 프로퍼티는 lazy property이다. loadView()로 view에 root view를 할당하고, 메모리에 로드한다. 같은 presentation 화면 전환 방식이지만, 어떻게 보여지느냐에 따라 view life cycle엔 차이가 있다.
결론부터 말하면,
Page sheet방식은 첫 화면의 view는 그대로 있다. 따라서 첫번째 뷰의 viewWillDisappear() viewDidDisappear() 는 호출 되지 않는다.
Page sheet방식은 두번째 화면으로 전환하더라도, 첫 화면이 뒷 배경으로 보여진다. 따라서 첫화면으로 돌아와도 첫화면의 내용은 그대로이다.

반면에 Full Screen방식과 Navigation방식으로 전환하면 첫번째 view는 사라진다. viewWillDisappear() viewDidDisappear() 가 호출된다.
