ViewController의 분류
Content VC
- 테이블뷰, 버튼, 이미지 뷰 등을 추가해서 화면을 구성하는 뷰 컨트롤러
- 하나의 화면을 구성하는 뷰 컨트롤러
Container VC
- 하나 이상의 뷰 컨트롤러를 차일드로 추가해서 관리
- 차일드 뷰 간의 화면 전환을 처리
- 네비게이션, 탭바, 스플릿 뷰 컨트롤러 등
UIViewController
- 서브클래싱 한 다음 필요한 기능을 추가하는 방식.
- 뷰 컨트롤러는 UIViewController 클래스로 구현한다.
- 화면을 구현할 때는 새로운 클래스를 만들고 UIViewController를 상속한 다음 원하는 기능을 추가하는 방식
LifeCycle
init
Load
- 메모리에 로드(저장) 되었지만 화면에 표시된 상태는 아님.
- window가 관리하는 뷰 계층에 추가되어야 함.
Appearing
- rootView가 view계층에 추가되기 전 단계
Appeared
- view계층에 추가되고 실제로 화면에 표시된 상태
Disappearing
- 현재 표시중인 rootView 가 view 계층에서 제거
Disappeared
Deinitialization
- viewController가 사라진다면 소멸자 호출
- 메모리에서 제거
- 다시 표시된다면 Appearing 상태가 됨.
ViewController LifeCycle이벤트의 처리 방식
AppDelegate, SceneDelegate
- App과 Scene의 LifeCycle 처리는
Delegate
형식으로 처리함
Call-back
- ViewController는
Call-back
방식으로 처리함.
- 자기 자신의 메소드를 호출하는 방식
viewDidLoad()
: rootView가 메모리에 로드되면 호출
- LifeCycle 구현할 때는 반드시 상위구현을 호출해야 함(
super.
)