본문 바로가기

Mobile/IOS

ViewController 특징 및 생명주기

- ViewController 생명주기

View Controller의 생명주기는 Scene의 전환과 복귀에 밀접하게 연관되어 있습니다.

일반적으로 새로운 장면으로 전환하거나 이전 화면으로 복귀하는 과정에서 View Controller의 객체의 생성과 소멸을 발생하기 때문입니다.

엡을 처음 실행하거나 새로운 장면으로 전환될때 그 장면을 담당하는 ViewController객체가 새로 생성됩니다. 생성된 객체는 메모리에 로드되어 일을 하게 됩니다. 주어진 역할이 끝나면 메모리에서 해제되면서 소멸합니다.

 

- view 상태 변화

ViewController는 다음과 같이 4가지 상태로 나눌 수 있습니다

 

  • Appearing(나타나는 중) : ViewController가 스크린에 등장하기 시작한 순간부터 등장을 완료하기 직전까지 상태입니다.
  • Appeared(완전히 등장한 상태) : ViewController가 스크린 전체에 완전히 등장한 상태를 나타냅니다.
  • Disappearing(사라지는 중) : ViewController가 스크린에서 가려지기 시작해서 완전히 없어지기 직전까지의 상태입니다.
  • Disappeared(완전히 사라진 상태) : ViewController가 스크린에서 완전히 가려졌거나 또는 퇴장한 상태를 나타냅니다.

- ViewController 상태 변화에 따라 호출되는 메소드들

- loadView() 

화면에 띄어질 View를 만들고, ViewController의 view 프로퍼티에 할당하는 역할을 합니다.

그러나 이 메소드는 직접적으로 호출하지 말라고 Apple 개발자 문서에 적혀있습니다.

 

- viewDidLoad()

 ViewController의 모든 뷰들이 메모리에 로드되었을 때 호출됩니다. 

이 메소드가 호출되는 시점에 이미 outlet변수들이 모두 메모리에 위치하고 있습니다. 화면이 보여지기 전 데이터를 뿌려주는 행위에 대한 코드를 작성할 수 있습니다.

생명주기에서 딱 한번 불립니다.

 

그래서 네트워크 호출과 같이 딱 한번 호출될 행위들을 이 메소드 안에서 정의 하며, 뷰의 추가적인 초기화 작업을 할 수 있습니다.

 

- viewWillAppear()

화면에 보이기 직전에 매 번 호출됩니다.

그래서 viewDidLoad()와 달리 화면 전환을 통해, 다른 뷰로 이동했다가 돌아오면 재 호출됩니다.

 

그래서 화면이 등장할 때마다 데이터를 갱신하고 싶다면, 이 메소드를 오버라이드 하여 원하는 코드를 작성하시면 됩니다. 뷰를 보여주는 것과 관련된 일, 애니메이션 실행, 비디오, 사운드 재생하기에 좋습니다.

 

화면 전환을 통해 다른 화면을 갔다가 다시 현재의 화면을 돌아올 때도 이 메소드가 호출 됩니다.

 

- viewDidAppear()

View Controller의 뷰가 데이타와 함께 완전히 화면에 나타나 호출되는 메소드입니다.

 

- viewWillDisappear()

ViewController가 화면에서 사라지기 직전에 호출, 이 메소드를 통해서 해당 뷰를 통해 일어난 변화를 저장하거나, 등의 원래대로 돌려놓는 등의 작업을 수행 합니다.

 

- viewDidDisappear()

ViewController가 화면에서 사라지기 직후에 호출되며 멈추어야할 작업들을 이 메소드에서 사용할 수 있습니다.