본문 바로가기
iOS/개념

[iOS] 화면 전환시 Life Cycle

by 나리._. 2021. 9. 14.

이전 화면 전환을 실습한 프로젝트에서 Life Cycle을 살펴본다.

개발자는 상황에 맞춰 관련 작업을 Life Cycle 메소드들 안에 정의하여 적절한 처리를 할 수 있어야 하기 때문에

해당 실습을 하며 언제 해당 메소드들이 호출되는지 확인해보자.

 

아래 사진처럼 viewcontroller 클래스에 life cycle 메서드들을 override 시켜 확인해보자.

어플리케이션을 실행 시키면 root view controller가 표시되며 콘솔창에는 아래와 같이 출력된다.

 

버튼을 눌러 화면전환을 하면 아래와 같이 출력되는 것을 확인 할 수 있다.

back button을 눌러 이전화면으로 다시 돌아가게 되면 viewDidLoad 메소드는 호출되지않고 viewWillAppear, viewDidAppear 메소드만 호출되는 것을 볼 수 있다.

여기서 왜  viewDidLoad 메소드는 호출되지 않을까?

이미 root view controller의 뷰가 메모리에 로드되었기 때문에 이전 화면으로 돌아갔을때 다시 호출되지않는다.

 

위의 View Controller와 같이 Segue Push View Controller 클래스에 life cycle 메서드들을 override 시켜 확인해보자. 

Segue Push View Controller 도 View Controller와 마찬가지로 viewDidLoad(), viewWillAppear(), viewDidAppear() 순서대로 출력되는 것을 볼 수 있다.

여기서 백버튼을 눌러 이전화면으로 이동해보면 viewWillDisappear(), viewDidDisappear()가 출력되는것 또한 확인 가능하다.

여기서 다시 Segue Push View Controller로 이동하게되면 위의 View Controller와 마찬가지로 viewDidLoad()가 호출되지 않을까?

위의 사진과 같이 Segue Push View Controller는 View Controller와 달리, viewDidLoad() 메소드가 호출된다.

그 이유 무엇일까?

Segue Push View Controller에서 이전 화면으로 돌아가게 되면 해당 View Controller는 메모리에서 삭제되기 때문이다.