Swift

7.[Swift] View Life Cycle(UIKit, SwiftUI)

Daesiker 2022. 8. 9. 15:12
반응형

7-1. 개요

View Life Cycle이란 말그대로 뷰의 생명주기라는 뜻인데 뷰가 호출돼서 메모리에 적재되었다가, 뷰가 메모리에서 해제될 때 까지의 과정을 생명주기라고 한다.

Swift의 UI 프레임워크인 UIKit과 Swift UI에는 각각 다른 방식의 생명주기를 통해 관리를 하는데 오늘은 이 2가지 프레임워크의 생명주기를 공부하고자 한다.

7-2. UIKit View Life Cycle

-loadView

화면의 띄울 View를 만드는 메서드로 View를 만들고 메모리에 올리는 역할을 한다.

일반적으로 사용자는 이 메서드를 직접 호출하면 안된다고 개발 문서에는 나와있다.

-viewDidLoad

loadView를 통해 메모리에 성공적으로 로드가 되면 호출되는 함수이다.

화면이 처음 만들어질 때 한 번만 실행되어서, 초기 화면을 구성하는 함수들이 여기서 실행이 된다.

-viewWillAppear

view가 이제 기기에 표시되기 직전에 호출되는 함수이다.

viewDidLoad와 다른 점은 메모리에서 완전히 해제되지 않으면 계속 호출이 될 수 있다는 점이다.

예를 들어, 네비게이션 뷰를 통해 다른 뷰를 호출했다가 다시 해당 뷰로 돌아오면, viewDidLoad는 호출되지 않지만 viewWillAppear은 호출이 된다.

-viewDidAppear

view가 기기에 표시된 직후에 호출되는 함수이다.

-viewWillDisappear

view가 기기에서 사라지기 직전에 호출되는 함수이다.

-viewDidDisappear

view가 기기에서 사라진 진후에 호출되는 함수이다.

-viewDidUnload

view가 메모리에서 완전히 해제될 떄 호출되는 메서드이다.

현재는 더 이상 사용되지 않는다.

view가 메모리에서 완전히 해제되고 다시 호출되면 그 때는 loadView부터 다시 실행된다.


7-3. SwiftUI View Life Cycle

SwiftUI의 view 생명주기는 UIKit보다 조금 더 단순한 편이다. 기기의 화면에서 view가 표시될 때 수행하는 onAppear과 화면에서 사라질 때 보여지는 onDisAppear 2가지가 존재한다.

import SwiftUI

@main
struct CombineAlamofireApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
                .onAppear {
                    print("view가 화면에 표시될 때 실행")
                }
                .onDisappear {
                    print("view가 화면에서 사라질 때 실행" )
                }
        }
    }
}

-onAppear

view가 기기에 표시될 때 실행되는 메서드로 perform 파라미터 안에 수행할 함수를 입력하면 view가 표시될 때 해당 함수가 실행된다.

UIKit으로 따지면 viewDidLoad가 아닌 viewDidAppear과 동일한 구간에서 수행하는 함수이다.

-onDisappear

view가 기기에서 사라질 떄 실행되는 메서드로 perform 파라미터 안에 수행할 함수를 입력하면 view가 사라질 때 해당 함수가 실행된다.

UIKit으로 따지면 viewDidDisappear과 호출시점이 같다.

반응형