- IOS/swift

ios view controller 생명주기 (life-cycle)

더모어더베러 2023. 9. 12. 17:54

안드로이드의 activity 화면 생명주기처럼 ios에도 생명주기가 있는데요.

한번 view controller의 생명주기에 대해 알아보겠습니다.

 

view controller의 흐름도는 아래와 같습니다.

 

흐름도 많이 낯설진 않고 안드로이드와 비슷한 느낌을 주는데요...

 

각 흐름에 대해 한번 정리를 해보겠습니다.

 

viewDidLoad

프로젝트를 만들면 바로 보이는 이 func.

    override func viewDidLoad() {
        super.viewDidLoad()
        print("viewDidLoad 호출")
    }

뷰 컨트롤러가 메모리에 로드되고 나서 호출이 됩니다.

 

이 viewDidLoad의 특징에 대해 설명하자면

 

이 viewDidLoad 메소드는 뷰의 로딩이 완료 되었을 때 

시스템에 의해 자동으로 호출되기 때문에 

일반적으로 리소스를 초기화하거나 

초기 화면을 구성하는 용도로 주로 사용합니다.

화면이 처음 만들어질 때 한 번만 실행되므로, 

처음 한 번만 실행해야 하는 초기화 코드가 있을 경우 

이 메소드 내부에 작성하면 됩니다. 

 

 

viewWillAppear

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        print("viewWillAppear 호출")
    }

뷰가 로드 된후에 뷰가 나타나기 시작할때 컨트롤러에 알리는 역할을 합니다.

 

화면 a에서 화면 b로 이동후에 뒤로가기를 눌러 다시 화면 a로 이동하였다면 화면 a에서는 viewDidLoad()는 호출 하지 않고

viewWillAppear()만 호출되게 되니 각 상황에 필요한 코드를 알맞은곳에 쓰시면 되겠습니다.

 

 

viewDidAppear

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        print("viewDidAppear 호출")
    }

뷰가 나타났다는것을 뷰컨트롤러에 알리는 역할을 합니다. 또한 화면에 적용될 애니메이션을 그려줘요.

viewDidAppear은 뷰가 화면에 나타난 직후에 호출됩니다.

 

 

viewWillDisappear

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        print("ViewController의 view가 사라지기 전")
    }

viewWillDisappear은 뷰가 사라지려고 할때 컨트롤러에서 호출됩니다.

 

 

 

viewDidDisappear

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        print("ViewController의 view가 사라짐")
    }

뷰가 사라졌음을 뷰컨트롤러에 알려주는 역할을 합니다.

 

 

 

출처 : https://zeddios.tistory.com/43