저번 글에서는 ViewController LifeCycle에 대해서 간단히 알아봤다.
이번 글에서는 간단한 예제를 통해 ViewController LifeCycle를 단계별로 나누어서 알아보겠다.
✅ 본 글에서는 브레이킹 포인트를 간단하게 BP로 표기함.
분기별 상태
생명 주기의 단계 진입 전에 BP를 걸고 진행하겠다.
첫번째 분기(34번)이다. View가 아직 메모리에 Load 되지 않았기 때문에 화면은 공백을 출력한다.
두번째 분기(41번)이다. View가 메모리에 올라간 상태이긴 하지만 아직 화면에 올라오지 않았기 때문에 화면은 공백을 출력한다.
세번째 분기(46번)이다. View가 메모리에 올라가고 화면에 올라왔기 때문에 화면은 정상적으로 출력 된다.
세번째 분기(46번)을 거쳐 ViewDidAppear까지 호출 되어 화면이 완전히 출력 됐음을 알 수 있다.
✔️ 이제 화면 전환을 해보겠다.
First ViewController의 화면 전환 버튼을 누르면 Second ViewController의 View를 Load하려고 한다.
위 처럼 Second ViewController의 첫번째 분기(33번)가 걸려있기 때문에 아직 View를 Load하지는 않았다.
Second ViewController의 첫번째 분기를 건너서 viewDidLoad() 메소드가 호출되면 Second ViewController는 메모리에 Load되고, First ViewController는 viewWillDisappear() 메소드 호출을 준비한다.
First ViewController가 viewWillDisappear() 메소드를 호출하면 Second ViewController는 viewWillAppeart() 메소드 호출을 준비한다.
Second ViewController가 viewWillAppear() 메소드를 호출하여 View가 화면에 올라왔다.
Second ViewController가 viewDidAppear() 메소드를 호출하여 View가 화면에 완전히 출력됨을 알리고,
First ViewController는 First View를 제거하기 위해 viewDidDisappear() 메소드 호출 준비를 한다.
First ViewController가 viewDidDisappear() 메소드를 호출하고 First View가 제거되면서 화면 전환의 생명 주기는 끝이나게 된다.
다시 Second View에서 First View로 화면을 전환하면 아까 앱 실행시 First ViewController는 메모리에 Load 되었기 때문에viewDidLoad() 메소드는 생략하고 아래와 같이 전환된다.
'iOS > iOS' 카테고리의 다른 글
[iOS] 동기(Sync), 비동기(Async) (1) | 2024.01.26 |
---|---|
[iOS] 프로세스(Process), 쓰레드(Thread) (0) | 2024.01.26 |
[iOS] 생명주기 - ViewController LifeCycle 1 (0) | 2023.08.17 |
[iOS] 생명주기 - iOS App LifeCycle 2 (1) | 2023.08.15 |
[iOS] 생명주기 - iOS App LifeCycle 1 (0) | 2023.08.15 |