iOS의 ViewControlle의 생명주기는 개발함에 있어 굉장히 중요하다.

해당 View에 컨텐츠가 언제 나타나야 하는지, 컨텐츠의 내용은 무엇인지, 해당 컨텐츠의 내용이 뷰가 사라지면 어떻게 되야하는지 등등 개발함에 있어 반드시 알아야 하는 중요한 사항들이있다.

ViewController의 생명주기에 대해 알아보자!

1. ViewDidLoad()

공식문서에 의하면 뷰 컨트롤러가 메모리에 로드된후 호출되는 메소드이다.

다시말해 뷰가 메모리에 로딩이 완료되면 시스템에 의해 자동으로 호출되는 메소드로, 화면이 처음 생성될때 딱 한번 실행된다.

2. ViewWillAppear()

공식문서에 의하면 뷰가 뷰 계층에 추가될 것임을 뷰 컨트롤러 알려주는 메소드이다.

다시말해 뷰가 화면에 나타나기 직전! 해당 메서드가 호출된다!

그럼, ViewDidLoad 도 화면에 나타나기전, 수행되는데 이 둘의 차이는 무엇일까?

직접 구현해보면 차이를 파악알수 있다.

처음 View를 표시할때 ViewDidLoad() 가 호출되고, 그다음에 ViewWillApear() 가 호출된다,

그리고 다른 뷰로 넘어갈때, 마찬가지로 둘다 호출이 되지만 다시 이전화면으로 돌아갈때

ViewWillAppear() 메소드만 호출됨을 알수있다.

즉, ViewDidLoad() 는 메모리가 해제되기 전까지는 무조건 1번만 호출되며, ViewWillAppear() 메소드는 메모리와 관계없이 해당 뷰를 표시할때 무조건 호출되는 차이가 있다!

3. ViewDidAppear()

공식문서에 의하면 뷰가 뷰 계층에 추가되었음을 뷰 컨트롤러에 알려주는 메소드이다.

다시 말해 ViewWillAppear() 는 뷰가 표시되기 직전 호출되는 메소드라면,

ViewDidAppear() 는 뷰가 표시된 직후!!! 호출되는 메소드이다!

4. ViewWillDisappear()

공식문서에 의하면 뷰가 뷰 계층에서 제거될 것임을 뷰 컨트롤러에 알려주는 메소드이다.

다시말해 뷰가 사라지기 직전 호출되는 메소드 이다!

5. ViewDidDisappear()

공식문서에 의하면 뷰가 뷰 계층에서 제거되었음을 뷰 컨트롤러에 알려주는 메소드이다.

마찬가지로 ViewWillDisappear() 가 사라지기 직전 호출되는 메소드라면, ViewDidDisappear()는 사라진 직후 호출되는 메소드이다.

이와 같이 ViewController의 생명주기는 메소드의 이름만으로도 충분히 어떤일을 수행하는 메소드인지 짐작할수 있다!

이를 직접 구현하여 실제로 어떤 순서로 호출되는지 파악해 보자!

확실히 호출되는 순서를 보면 더욱더 이해하기 쉽다!

이 생명주기를 잘 기억하여 

View 에 표시되는 데이터나 저장해야하는 시점 등등을 적절한 메소드에 적절하게 사용하면 된다!

아주 기본적이면서 아주 중요한 내용이다!

+ Recent posts