Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

# View Controller의 Life cycle #74

Open
yoogail105 opened this issue Jun 1, 2022 · 0 comments
Open

# View Controller의 Life cycle #74

yoogail105 opened this issue Jun 1, 2022 · 0 comments

Comments

@yoogail105
Copy link
Owner

# View Controller의 생명주기

image

  • 화면이 나타났다가, 사라지는 등의 동작을 하는 주기
  • UIViewController를 사용해서 프로젝트를 만들다보면, viewDidLoad()라는 함수를 익숙하게 만날 수 있는데, 그것 역시 ViewController의 생명 주기 안에 속해있는 함수이다.
  • 먼저 나타나는 것과 사라지는 것에 대해 Will, Did로 나뉘어져 있는데 이는 말 그대로 나타날 것, 나타났음, 사라질 것, 사라졌음을 의미한다.
  • 그리고 이러한 일련의 함수는 애플에서 미리 정의해놓은 함수를 불러와서 재정의override하는 방식으로 사용된다. XCode에서도, override라는 키워드와 함께 사용한다.
    image
  • 종류
    • loadView
    • viewDidLoad
    • viewWillAppear
    • viewDidAppear
    • viewWillDisappear
    • viewDidDisappear
    • viewDidUnload

loadView

image

  • controller가 관리할 뷰를 만든다.
  • 코드를 이용해서 UIView를 그렸을 때, 이 곳에서 불러와주었다.
  • image

viewDidLoad

image

  • 뷰가 로드 되었음. 나타났음
  • 뷰의 컨트롤러가 메모리에 올라간 후에 불린다.
  • 화면이 만들어졌을 때 처음 한 번만 호출되기 때문에
    → 리소스를 초기화, 초기 화면을 구성하는 용도로 사용됨

viewWillAppear

image

  • 뷰가 나타날 것임
  • viewController에게 view hierarchy에 뷰가 추가될 것이라고 알린다.
  • viewDidLoad와의 차이점?
    • viewDidLoad()는 메모리에 올라갔을 때, 처음화면이 만들어졌을 때에 한 번만 호출된다.
    • 예를 들어서, A → B → A 로의 화면 전환이 이루어졌다고 할 때,
      • A화면: viewDidLoad, viewWillAppear
      • B화면: viewDidLoad, viewWillAppear
      • A화면: viewWillAppear
    • 위와 같이 이미 한 번 로드된 화면으로 돌아갈 때 viewDidLoad는 호출되지 않는다.

viewDidAppear

image

  • 뷰가 나타났음
  • viewController에게 view hierarchy에 뷰가 추가되었다고 알린다.
  • 뷰가 화면에 나타난 직후에 실행된다.

viewWillDisAppear

image

  • 뷰가 사라질 것임
  • viewController에게 view hierarchy에서 뷰가 제거될 것이라고 알린다.

viewDidDisAppear

image

  • 뷰가 사라졌음
  • viewController에게 view hierarchy에서 뷰가 제거되었다고 알린다.

LifeCycle 동작 확인하기

  • (아까와 같이)화면 A에서 버튼을 눌러 B로 이동, 다시 A로 이동한다고 할 때
  • A화면 등장
    1. A viewDidLoad
    2. A viewWillAppear
    3. A viewDidAppear
  • A화면에서 버튼을 눌러 B화면으로 이동
    1. A viewWillDisappear
    2. B viewDidLoad
    3. B viewWillAppear
    4. A viewDidDisappear: A viewWillDisappear후에 바로 호출되지 않음
    5. B viewDidAppear
  • B화면에서 다시 A로 이동
    1. B viewWillDisappear
    2. A viewWillAppear: A viewDidLoad 호출되지 않음
    3. B viewDidDisappear: B viewWillDisappear후에 바로 호출되지 않음
    4. A viewDidAppear

🔖 출처

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant