[iOS] View Controller Life Cycle

MinTa·2022년 1월 23일
0

iOS에서 화면 하나를 구성하는데에 하나의 View Controller가 매칭되는데 이 View Controller들에는 나타나고 사라지는 생명주기가 있다.
생명주기라는 개념자체는 이전에도 들어는 봤었지만 이번에 iOS를 제대로 공부하기 시작하면서 자세히 알아보고 공부해보았다.


View Controller는 위와 같은 생명주기를 가지고 있다. 이름을 보면 어느정도는 직관적으로 파악할 수 있다.

1. loadView

loadView는 ViewController의 view를 만드는 역할을 메소드이고 viewDidLoad()보다 시점상 먼저 실행된다.
loadView()에서는 뷰를 직접 초기화해주어야하고 storyboard를 쓸때에는 필요없다고 봐도 된다.

2. viewDidLoad

View의 컨트롤러가 메모리에 로드되고 난 후에 호출되는 메소드.
View가 메모리에 로드되고 나면 시스템에 의해 자동으로 호출되고 화면이 처음 만들어질 때 한번만 실행되므로 처음 한번만 실행해야하는 초기화 코드가 있을 경우 이 메소드 내부에 작성하면 된다고 한다.

3. viewWillAppear

View가 로드된 다음에는 화면에 View가 나타나야하는데 이때 호출되는 메소드.
(viewDidLoad() 이후에 호출됨)
다음 화면으로 넘어갔다가 이후에 다시 원래화면으로 돌아올시에는 viewDidLoad()는 호출되지 않고!
viewWillAppear()함수만 재차 호출된다.
( 첫화면을 호출할시에는 viewDidLoad() -> viewWillAppear() 순으로 함수호출 )

4. viewDidAppear

View가 나타난것을 컨트롤러에게 알리는 역할을 하는 메소드.
화면에 나타낙 직후에 실행되고 화면에 적용될 에니메이션을 그리는 작업을 수행한다.

5. viewWillDisappear

View가 사라지기 직전에 호출되는 메소드.
View를 생성하고나서 했던 행동들을 rollback하는 작업을 하거나 필요하 정보들이 삭제되기 전에 저장하는 작업을 수행한다.

6. viewDidDisappear

View가 제거되었음을 컨트롤러에게 알리는 역할을 하는 메소드.
한가지 유의해야할점은 첫번째 화면에서 두번째화면으로 넘어갈 때에 첫번째 화면은 disappear하고 두번째 화면이 appear되는데 그냥 간단하게 생각한다면 첫번째가 모두 viewDidDisappear까지 완료된 후에 두번째 view가 load되고 appear할 것 같지만

실제로는

1st viewDidLoad
1st viewWillAppear
1st viewDidAppear
==== 화면 전환 ====
1st viewWillDisappear
2nd ViewDidLoad
2nd ViewWillAppear
1st viewDidDisappear
2nd viewDidappear

위와 같은 순서대로 첫번째 화면을 없을 준비를 해놓은 상태에서 두번째 화면을 미리 대기시켜놓고 첫번째 화면을 완전히 지우고 그 이후에 대기시켜놓은 두번째 화면을 보여주는 것을 알 수 있다.

7. viewDidunLoad

View를 메모리에서 완전히 제거하는 것을 말한다.

profile
지(치지않고)꾸(준히)열(심히)

0개의 댓글