상세 컨텐츠

본문 제목

[Swift] View의 생애주기2

SWIFT

by 옹홍 2021. 2. 8. 16:26

본문

이글은 zeddios.tistory.com/44을 참고해서 작성한 글입니다.

첫번재 뷰에서는 viewDidLoad가 다시 불리지 않는다. 그리고 뷰의 생명주기는 각각의 뷰에서 가진다.

BUT!! 

두번쨰 뷰의 viewDidLoad는 왜 두번째 뷰로 갈때마다 불리는 이유는?

네비게이션 바에서 화면이 차곡차곡 쌓이는 메커니즘이라는 것을 알 수 있다

뒤로가면 가장 최근에 봣떤 화면이 뜨는것!! -> Stack 구조!!

출처: zeddios

LIFO(Last-in First-out) 구조이다. 네비게이션 컨트롤러도 이 스택구조와 100% 같다.

네비게이션 컨트롤러는 반드시 root View controller를 갖는 것이다.\

root view controller가 있고, 그 위로 view들이 스택처럼 쌓이는 구조이다. (push 연산)

push 연산이 있으면 pop 연산도 있다.

pop연산은 뒤로가기 버튼을 누르면 현재 화면은 사라지고 이 화면 바로 밑의 화면이 이 스택의 top이 되면서 top의 화면을 사용자에게 보여준다.

스택 자료구조에서 pop된 데이터는 메모리가 사라지게 된다. 그렇다면? 네비게이션 컨트롤러 구조에서도 마찬가지로 뷰가 pop되면 뷰의 메모리가 사라지는 것이다.

viewDidLoad는 뷰의 컨트롤러가 메모리에 로드되고 난 후에 호출된다. 첫번째 viewDidLoad는 콘솔창이 다시 안나오는 이유는 root view controller 이기 때문이다. 두번째 뷰는 스택에서 pop 된 상태이고, 다시 두번쨰 뷰로 가려면, 메모리에 올려서 스택에 push 해주기 때문에 viewDidLoad가 호출되는 것이다

관련글 더보기

댓글 영역