ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • iOS ViewController 생명주기
    🧑‍💻/Swift 2021. 7. 12. 22:27
    반응형

    iOS는 Navigation Controller를 사용해 화면을 전환할 때 LIFO(Last In First Out) 방식으로 관리합니다.
    스택 구조와 동일하므로 마지막으로 push 된 화면을 표시하고 제거(pop)합니다.
    화면이 표시되기 전부터 제거된 후까지의 생명주기를 알아보겠습니다.

    ViewController Lifcycle

    1. init

    ViewController 객체가 생성됩니다.

     

    2. loadView

    View를 메모리에 로드합니다.

     

    3. viewDidLoad

    View의 Controller가 메모리에 로드된 뒤 호출됩니다.
    보통 화면이 표시되기 전 초기화하는 작업을 추가합니다.

    awakeFromNib

    nib 파일이란 Xcode가 xib와 storyboard를 컴파일한 바이너리 파일입니다.
    런타임 시 View를 생성하기 위해 nib 파일을 메모리에 로드하고 초기화합니다.
    awakeFromNib는 nib 파일이 로드된 뒤 서비스할 준비가 되어있는 상태에 호출됩니다.

    따라서 다음과 같은 순서로 진행됩니다.
    ViewController awakeFromNib
    ViewController loadView
    ViewController viewDidLoad

     

    4. viewWillAppear / viewDidAppear

    viewWillAppear : View가 표시되기 직전에 호출됩니다.
    View1 > View2 > View1 형태로 View가 전환된다면
    viewDidLoad는 1회만 호출되지만, viewWillAppear은 View1이 2번 나타나므로 2회 호출됩니다.

    viewDidAppear : View가 표시된 후 호출됩니다.

    View에 적용할 애니메이션 작업을 추가하는 것이 좋습니다.

     

    5. viewWillDisappear / viewDidDisappear

    View가 사라지기 직전/직후 호출됩니다.
    View1 > View2 > View1 형태로 View가 전환된다면 다음 순서로 진행됩니다.
    View2가 표시할 준비가 되면 이후 View1이 사라집니다.

    View1 viewWillDisappear
    View2 viewDidLoad
    View2 viewWillAppear
    View1 viewDidDisappear
    View2 viewDidAppear

     

    6. viewDidUnload

    View가 메모리에서 해제된 뒤 호출됩니다.


    참고

    반응형

    댓글

Designed by Tistory.