이글은 zeddios.tistory.com/44을 참고해서 작성한 글입니다.
첫번재 뷰에서는 viewDidLoad가 다시 불리지 않는다. 그리고 뷰의 생명주기는 각각의 뷰에서 가진다.
BUT!!
두번쨰 뷰의 viewDidLoad는 왜 두번째 뷰로 갈때마다 불리는 이유는?
네비게이션 바에서 화면이 차곡차곡 쌓이는 메커니즘이라는 것을 알 수 있다
뒤로가면 가장 최근에 봣떤 화면이 뜨는것!! -> Stack 구조!!
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가 호출되는 것이다
[iOS] 음악재생, 녹음하는앱(2) .delegate = self (0) | 2021.02.10 |
---|---|
[iOS] 음악재생, 녹음하는 앱(1) (0) | 2021.02.10 |
[Swift] View Controller의 생명주기 (0) | 2021.02.08 |
[Swift] Delegate로 정보 전달하기 (0) | 2021.02.05 |
[Swift] 함수 (0) | 2021.01.31 |
댓글 영역