[iOS/Swift] 생명주기(Lifecycle) - View Controller

민니·2022년 7월 19일
0

iOS

목록 보기
17/22

View Controller

우리는 앱은 하나 이상의 View Controller로 이루어져 있음을 알고 있다.
앱은 보통 하나 이상의 화면을 가지기 때문이다❗️
앞서 포스팅한 앱과 Scene처럼 View Controller도 생명 주기를 가진다.


먼저 정의를 먼저 정리해 보자

will과 did는 그냥 느낌대로 해석하면 된다.
will은 ~ 할 것 이다
did는 ~ 했다

init

  • view controller을 생성한다.

loadView

  • 직접 호출되지는 않는다.
  • view 속성이 요청되었으나 현재 nil 상태일 때, view controller가 호출한다.
  • 이 메서드는 view를 load하거나 만들고 뷰 view 속성에 할당한다.

viewDidLoad

view가 load되었다

  • view controller의 view가 메모리에 load되면 자동으로 호출됨
  • 화면이 처음 만들어질 때 한번만 실행됨

엇 어데서 본 것 같은디... 자동으로 생성되는 그거 맞다 ❗️

viewWillAppear

view가 나타날 것이다

  • view가 나타날 것임을 view controller에게 알림
  • viewDidLoad와의 차이점
    다른 view에서 돌아오는 상황에 해 주고 싶은 처리는 viewWillAppear 메서드에서

자세한 내용은 실습해 보면서 알아봅쉬닷

viewDidAppear

view가 나타났다

  • view가 나타났음을 view controller에게 알림

viewWillDisappear

view가 사라질 것이다

  • view가 사라질 것임을 view controller에게 알림
  • view가 실제로 제거되기 직전에 호출

viewDidDisappear

view가 사라졌다

  • view가 사라졌음을 view controller에게 알림
  • view를 해제하거나 숨기는 것과 관련된 추가적인 작업을 수행할 수 있음

viewDidUnload

  • view controller의 view가 메모리에서 해제될 때 호출
    ➡️ iOS 6 이후로 사용하지 않음

이런 건 실제로 해 봐야 안다구 ❗️

navigation controller를 만들어 주고 next button과 back button을 구현해 주었다
✏️ next button: 다음 화면으로
✏️ back button: 이전화면으로 (navigation bar의 back button을 이용해도 된다!)

ㄴ view controller에 생명 주기를 알아보기 위한 코드 구현

ㄴ second view controller에 생명 주기를 알아보기 위한 코드 구현


viewDidLoad

다른 부분을 다 주석 처리하고 우선, viewDidLoad가 호출되는 순간을 먼저 확인해 보자


viewWillAppear & viewDidAppear

첫 화면 ➡️ 두 번째 화면 ➡️ 다시 첫 번째 화면으로 돌아올 때 ❗️

✏️ viewDidLoad는 호출되지 않고 viewWillAppear이 호출됨을 알 수 있다


viewWillDisappear & viewDidDisappear

  • 첫 번째 화면
    ✏️ first vc - viewDidLoad: first vc의 view가 load 됨
    ✏️ first vc - viewWillAppear: first vc의 view가 나타나기 전에 호출
    ✏️ first vc - viewDidAppear: first vc의 view가 나타난 후에 호출
  • 첫 번째 화면 ➡️ 두 번째 화면
    ✏️ second vc - viewDidLoad: second vc의 view가 load 됨
    ✏️ first vc - viewWillDisappear: first vc의 view가 사라지기 전에 호출
    ✏️ second vc - viewWillAppear: second vc의 view가 나타난 후에 호출
    ✏️ first vc - viewDidDisappear: first vc의 view가 사라진 후에 호출
    ✏️ second vc - viewDidAppear: second vc의 view가 나타난 후에 호출
  • 두 번째 화면 ➡️ 첫 번째 화면
    ✏️ second vc - viewWillDisappear: second vc의 view가 사라지기 전에 호출
    ✏️ first vc - viewWillAppear: first vc의 view가 나타나기 전에 호출
    ✏️ second vc - viewDidDisappear: second vc의 view가 사라진 후에 호출
    ✏️ first vc - viewDidAppear: first vc의 view가 나타난 후에 호출

🔗
https://zeddios.tistory.com/43
https://developer.apple.com/

0개의 댓글