본문 바로가기
프로그래밍/iOS-Swift

[SWIFT] View Controller 수명주기

by 채연2 2021. 4. 2.

View Controller 수명주기

 

 

  • viewDidLoad()
    • view controller content view (뷰 계층 구조의 맨 위) 생성되고 story board에서 load될 때 호출됨.
    • view controller 출력은 method가 호출될 때까지 유효한 값을 갖도록 보장
    • content view가 처음 생성될 때  한 번만 호출 (초기화 코드 있을 경우 작성)
    • controller가 처음 instance화 될 때 content view가 반드시 생성되는 것은 아님
      • system이나 code가 controller view 속성에 처음 access할 때 느리게 생성됨.
  • viewWillAppear()
    • controller content view가 앱의 view 계층 구조에 추가되기 직전에 호출됨
    • content view가 화면에 표시되기 전에 발생해야하는 작업을 trigger
    • system이 이 method를 호출한다고해서 content view가 표시된다는 보장은 없음.
    • view가 다른 view에 의해 가려지거나 숨겨질 수 있음
    • content view가 앱의 view 계층 구조에 추가 될 것임을 나타냄
    • ▶ viewDidLioad()와 다른 점?
      • view1을 생성했다고 하자.
      • view1은 생성될 때 viewDidLoad(), viewWillAppear()가 각각 호출됐을 것이다.
      • view1에서 view2로 이동했다고 하면 view2가 생성됐으므로 viewDidLoad(), viewWillAppear()가 호출됐을 것이다.
      • 하지만, view2에서 다시 view1로 이동한다고 하면?
      • view1에서는 viewWillAppear()만 호출된다
      • ▶viewDidLoad()는 content view가 처음 생성될 때 딱 한 번만 호출되기 때문이다.
  • viewDidAppear()
    • view controller content view가 앱의 view 계층에 추가된 직후에 호출됨
    • 데이터 가져오기 또는 애니메이션 표시와 같이 view가 화면에 표시되는 즉시 발생해야 하는 모든 작업 trigger
    • system이 이 method를 호출하기 때문에 content view가 표시된다는 보장은 없음
    • view가 다른 view에 의해 가려지거나 숨겨질 수 있음
    • content view가 앱의 view 계층 구조에 추가되었음을 나타냄
  • viewWillDisappear()
    • view controller content view가 앱의 view 계층에서 제거되기 직전에 호출됨
    • 변경 사항 및 commit 또는 the first responder status를 resigning하는 것과 같은 cleamup tasks 수행
    • system은 content view가 숨겨지거나 가려지면 이 method를 호출하지 않음
    • content view가 앱의 view 계층에서 제거되려고 할 때만 호출됨
  • viewDidDisappear()
    • view controller content view가 앱의 view 계층에서 제거된 직후에 호출됨
    • 추가 분해 작업을 수행
    • system은 content view가 숨겨지거나 가려지면 이 method를 호출하지 않음.
    • content view가 앱의 view 계층에서 제거된 경우에만 호출됨

 

 

 

 

 

 

320x100

'프로그래밍 > iOS-Swift' 카테고리의 다른 글

[SWIFT] EXTENSION  (0) 2021.04.05
[SWIFT] Autoresizing  (0) 2021.04.02
[SWIFT] 로컬 파일 로드하는 방법  (1) 2021.03.31
[SWIFT] WKWebView  (0) 2021.03.31
[SWIFT] Lamp On Off App  (0) 2021.03.31

댓글