안녕하세요 이웃님들!! 오늘은 뷰 컨트롤러의 생명주기에 대해 알아보는 시간 갖도록 하겠습니다.
iOS에서 가장 중요한 부분 중에 하나일 것 같아서 가지고 왔습니다!
깔끔하게 정리하고 가겠습니다!! View Controller는 줄여서 VC로 표현하도록 하겠습니다.
VC의 생명주기에 대한 사진을 하나 가져왔습니다.
앱의 생명주기가 아닌 뷰의 생명주기 이미지입니다. View Property에 처음 접근이 일어났을 때, 메소드가 실행됩니다.
viewDidLoad가 실행되고, viewController는 Appear / Disappear의 상태를 가집니다. 그리곤 Did와 Will이 생성이 됩니다.
먼저 말씀드리자면!
viewDidLoad -> viewWillAppear -> viewDidAppear -> viewWillDisappear -> viewDidDisappear 순으로 진행됩니다.
VC의 생명주기를 확인해보기 위해 프로젝트를 하나 생성해서 가져와 보았습니다. 각 메서드가 실행되었을 때,
동작 상황을 보기 위해 값을 콘솔창에 print해보겠습니다.
VC의 시작은 당연히 초기화 시점에 시작됩니다. VC가 생성되며 뷰의 프로퍼티인 content view가 생성됩니다(storyboard.xib)
이렇게 뷰까지 생성되고 나면 viewDidLoad 메소드가 호출됩니다.
일반적으로 이 viewDidLoad 메소드는 최초 한번만 실행됩니다.
그리고 이 viewDidLoad는 애초에 UIViewController에 존재하기 때문에 우리가 구현하는 메소드는 override function 되어야 합니다.
직접 구현하는 VC는 이 UIViewController를 상속하게 되기 때문입니다.
이 시점에서 outlet들은 값을 가져야 하기 때문에 일반적으로 viewDidLoad는 view를 구현할 때 최초의 포인트가 되고 이 곳에 기본적인 값들을 구현합니다.
처음 실행 시 viewDidLoad(), viewWillAppear(), viewDidAppear()만 실행이 됩니다.
그리곤 다음 VC로 넘어가기 위해 Show 버튼을 만들었고, 눌러보겠습니다.
2번째 VC로 넘어갈 땐
2번째 VC의 viewDidLoad() -> 1번째 VC의 viewwillDisappear -> 2번째 VC의 viewWillAppear() -> 1번째 VC의 viewDidDisappear -> 2번째 VC의 viewDidAppear()가 출력된다.
다시 첫번째 VC로 넘어오면
2번째 VC의 viewwillDisappear() -> 1번째 VC의 viewWillAppear() -> 2번째 VC의 viewDidDisappear() -> 1번째 VC의 viewDidAppear가 출력된다.
🍎 정리하자면! 아래와 같이 정리할 수 있습니다.
1. viewDidLoad: VC의 엔트리 포인트
2. viewWillAppear: VC의 content view가 view hierarchy에 추가되기 전 동작. VC가 화면에 보이기 직전 일어나야하는 단순 연산
3. viewDidAppear: VC의 content view가 view hierarchy에 추가된 후 동작. 화면이 나타남과 동시에 시작되야할 연산(e.g. 데이터 불러오기)
4. viewWillDisappear: VC의 content view가 view hierarchy에 삭제되기 전 동작. 키보드를 숨기거나 특정 작업을 저장하는 등 화면이 사라지기 전 동작해야할 작업
5. viewDidDisappear: VC의 content view가 view hierarchy에 삭제된 후 동작. 메모리에 적재된 추후 재생성 가능한 데이터 제거 등 마무리 작업
라고 생각하시면 이해가 쉬울 겁니다! 하지만... 이해하기 쉽지가 않죠...
이상 뷰 컨트롤러의 생명주기 관련해서 포스팅은 이만 마치겠습니다!
생명주기의 관련된 내용은 매우 중요하니, 다른 좋은 정보를 알게되면 수정해서 업데이트 하도록 하겠습니다!
개발하는 윤기사는 오늘도 빡코딩 하겠습니다!!
출처: https://jayb-log.tistory.com/263
[iOS] - View Controller
🕹 View Controller 🎯 View Controller란? View Controller는 iOS 앱의 가장 기초가 되는 빌딩 블록이라고 할 수 있습니다. 모든 앱은 최소 한 개의 View Controller를 가지며 일반적으로 여러개의 View Controll..
jayb-log.tistory.com
'iOS_Swift 앱개발👍' 카테고리의 다른 글
[iOS_Swift] 오픈소스 라이브러리 추가 (Add Package) _ 11 (0) | 2022.07.20 |
---|---|
[iOS_Swift] TableViewController (테이블뷰) _ 10 (31) | 2022.07.18 |
[iOS_Swift] UIDatePicker의 모든 것_ 8 (30) | 2022.07.15 |
[iOS_Swift] NavigationController(네비게이션 컨트롤러)_ 7 (30) | 2022.07.13 |
[iOS_Swift] 스택뷰(StackView)의 모든 것_ 6 (30) | 2022.07.11 |