viewController 의 생명주기 ( UIViewController's Life cycle)

2023. 11. 26. 01:26Mobile/iOS

기본적으로, UIKit 에서 ViewController

자신이 관리하는 View 와 AppData 사이의 중개자 역할을 한다.

클래스 메서드와 속성을 UIViewController를 사용해 앱의 시각적 표현을 관리할 수 있다.

 

뷰 컨트롤러의 주요 책임

  • 일반적으로 기본 데이터 변경에 대한 응답으로 뷰 내용 업데이트
  • 뷰와의 사용자 상호작용에 응답
  • 뷰 크기 조정 및 전체 인터페이스 레이아웃 관리
  • 앱에서 다른 뷰 컨틑롤러를 포함한 대른 객체와의 조정

ViewController 가 사용자가 앱을 구동하고 화면이 시작하고 처음 보이는 뷰와 다른 뷰로 이동하고 어떤 버튼을 눌렀을 때 화면 전환이 되거나, 사라지는 등의 주기를 설정해 줄 수 있는게 바로 ViewController 의 생명주기 (Life cycle) 이다.

 

뷰가 제거되었을 때 -> Disappeared

뷰가 더해질때 -> (Disappeared -> Appearing ) 뷰가 사라졌다 나타날

Appearing -> Appeared : 뷰가 나타나면서 나타났을 때 ( viewDidAppear)

Appeared -> Disappearing: 뷰가 나타났고 사라지고 있을 때(사라질 때) (viewWillDisappear)

Disappearing -> Disappeared: 사라지다가 아예 없어짐 ( 뷰제거 ) Disappeard

Creating a view controller - 뷰 생성

  • init() : 뷰를 직접 생성하는 것
    그 방법은 2가지 형태가 있음
    • init(nibName: String?, bundle: Bundle?) : nib, xib 스토리보드 파일의 동일한 부품같은 디자인이 있으면 가지고 와서 쓸수있다.  ->지정된 번들의 nib 파일을 사용하여 뷰 컨트롤러를 생성합니다.
    • init(coder: NSCoder):  unarchiver(압축되지 않은 데이터)들에 데이터가 포함된 뷰 컨트롤러를 생성한다.

Managing the view - 뷰 관리

  • loadView() : 뷰를 로드 ( 메모리에 올리는 함수)
  • viewDidLoad(): view 가 메모리에 올라온 후 호출 -> view에 추가 초기화 하려고 하면 viewDidLoad()를 재정의 해서 사용하라고 공식문서에서 언급한다. 
    => view 가 메모리에 올라올 때 한번만 실행, 처음 한번만 실행하면 되는 코드를 이 곳에 작성

Responding to view-related events - 뷰 관련 이벤트 응답

  • viewWillAppear(_ :) 화면에 나타나기 전에 호출 ( 화면에 띄워줄 때마다 호출된다 ) 
  • viewDidAppear(_ :) 스크린에 뷰가 나타난 후 호출 ( 뷰의 애니메이션을 시작하거나, 타이머를 시작하는 등 화면이 나타난 후 필요한 작업 처리
  • viewWillDisappear(_ :): 스크린에서 뷰가 사라지기 전에 호출, (애니메이션 멈추거나 타이머 종료시키는 등 작업처리)
  • viewDidDisappear(_ :):스크린에서 뷰가 사라진 후 호출(화면이 스크린에서 내려간거지, 메모리 해제는 아님)