뷰의 라이프사이클은 앱을 생성할 때 가장 먼저 보이는 것중 하나이다.
언제 나오냐고요?
여러분이 바로 앱을 생성하자마자 나오는 코드중 ViewDidLoad()
함수가 뷰 라이프사이클을 관리하는 함수 중 하나이다.
그만큼 뷰의 생명주기에 대해서 이해하는 것은 앱을 설계하는데 있어서 중요한 요소중 하나이고, 오늘은 이 ViewController의 생명주기에 대해서 스스로 다시 학습해볼겸 내용을 정리해볼까 한다.
ViewController
의 생명주기를 알기 이전에 ViewController
라는 친구에 대해 간단하게 알아볼 필요가 있다.
Apple Developer Document - View Controller
View Controller는 단일 Root View를 관리하며, 이는 그 자체로 여러 개의 하위 View를 포함할 수 있다. 해당 View 계층 구조와의 사용자 상효 작용은 필요에 따라 앱의 다른 개체와 조정하는 View Controller에 의해 처리된다.
모든 앱에는 콘텐츠가 메인 창을 채우는 적어도 하나의 View Controller가 있다. 앱에 한 번에 화면에 들어갈 수 있는 것보다 더 많은 컨텐츠가 있다면, 여러 View Controller를 사용하여 해당 컨텐츠의 다른 부분을 관리해라.
뭔가 내용이 좀 추상적인것 같아 다른 문서를 좀 확인하던 중 View Controller
의 역할이라는 이름으로 정리된 아카이브 문서가 있어서 들고와봤다. 해당 문서에 따르면 View Controller
의 역할은 크게 4가지로 나뉘는 것 같았다.
The Role of View Controllers
- View 관리
- 데이터 객체와 View 사이를 관리
- 사용자와의 상호작용
- 리소스 관리
어느정도 ViewController
의 개념을 잡을 수 있는 좋은 문서들이었다. 결국 ViewController
는 View
를 관리하기 위한 존재이고, View
를 위한 추가적인 역할을 하는 존재임을 파악할 수 있었다.
이렇게 알아본 내용에 따르면 ViewController
는 앱이 시작하고부터 무조건 하나 이상이 존재하는 상태일 것이다. 하지만 분명히 앱이 실행됐을 때 앱 안에있는 모든 ViewController
들이 동작하는 것은 아닐것이다.
만약 그렇다 한다면 엄청나게 메모리를 먹기도 할 것이고, 만약 CPU의 성능이 부족한 아이폰이라면 앱의 동작속도 또한 저하될것이다. 그렇기에 이러한 한정된 리소스 안에서 앱을 최적화하기 위해서 우리가 갖고 있는 이 앱속에 있는 무수히 많은 View Controller
에 대해 관리할 줄 알아야된다.
일반적으로 UIViewController의 생명주기라 한다.
네이밍이 매우 직관적이어서 어떠한 의미인지 바로 느낌이 오긴 하지만 간략하게 정리해보자
생명주기에 대해 학습하던중 도대체 이 메소드들을 UIViewController
가 콜백하는지 알고싶어졌다. 분명 UIViewController
도 해당 ViewCycleMethod
를 특정 트리거에 의해 호출되는 시점이 있을것이라 생각하는데, 열심히 찾아보면 결국 "UIViewController가 자동으로 인지해서 호출한다"로 귀결이 되서 열심히 찾아봤다.
오늘은 이렇게 ViewController
의 생명주기에 대해 알아봤는데 이렇게 알아보는 과정에서 생명주기에 대한 내용을 다시한번 익힐 수 있었고, 추가로 ViewController
의 계층 구조라던지, 역할에 대해 더 자세하게 알 수 있었다.
좀 더 알아봤던 view cycle
의 method
들이 어느 함수에서 콜백되는지 알아볼 수 있었고, 생각보다 애니메이션에 의존한다는 사실도 알 수 있었다.