오늘은 뷰컨트롤러의 생명주기에 대해 공부했다.
우리가 Xcode를 이용해 개발을 하려고 프로젝트를 만들었다면 아래의 사진과 같은 코드를 자주보았을 것이다. 아래의 코드에 대해서 좀 더 깊이 알아보도록 하자.
생명주기(Life cycle) : 무언가 태어나고 죽는 순간까지의 주기를 떠올릴 수 있다. 여기서 무언가는 ViewController를 이야기할 수 있다. iOS에서 화면을 구성하는 요소인 ViewControler가 viewController는 뷰가 나타나고(=메모리에 할당되고부터) 사라지기(=메모리에서 해제되기)까지의 주기를 의미한다.
뷰컨트롤러의 생명주기는 위와 같이 순서와 뜻이 직관적이다.
키워드를 보고 알 수 있듯이 will(~할 것이다)-미래, did(~ 했다)-과거를 의미한다고 보면된다.
loadView(뷰컨트롤러에 뷰를 로드한다) -> viewDidLoad(뷰가 로드 되었다) -> viewWillAppear(뷰가 나타날 것이다) -> viewDidAppear(뷰가 나타날 것이다) -> viewWillDisappear(뷰가 사라질 것이다) -> viewDidDisappear(뷰가 사라졌다)
# Load
- loadView
- 화면에 띄워줄 View를 만드는 메서드로 View를 만들고 메모리에 올려준다.
- 일반적으로 사용자는 이 메서드를 직접 호출하면 안된다.
- viewDidLoad
- viewDidLoad메서드는 뷰의 로딩이 완료 되었을때 시스템에 의해 자동으로 호출된다.
- 화면이 처음 만들어질 때 한 번만 실행 되므로, 초기화 코드가 있을 경우 이 메서드 내부에 작성하면 된다.
# Appear
- viewWillAppear
- ViewContoller의 Root View가 로드된 이후에 Window의 View계층으로 더해지기 직전 호출되는 메서드이다.
- 다른 view에 갔다가 다시 돌아오는 상황에 해주고 싶은 처리는 이 메서드 내부에 작성해주면 된다.
- viewWillAppear와 viewDidAppear사이에 constraint와 layout이 적용된다.
- viewDidAppear
- window 의 root view가 View 계층으로 더해진 직후 호출되는 메서드이다.
- View가 나타났다는 것을 컨트롤러에게 알리는 역할을 하며, 화면에 적용될 애니메이션을 그려준다
# Disapper
- viewWillDisapper
- window 의 root view가 View 계층에서 제거되기 직전 호출되는 메서드이다.
- View가 삭제되려고 하는 것을 ViewController에 통지한다.
- viewDidDisapper
- window 의 root view가 View 계층에서 제거된 직후 호출되는 메서드이다.
- view가 제거되었음을 알려준다.