왕논의 연구실

패스트캠퍼스 챌린지 28일차 본문

강의/강의 챌린지(iOS 앱 개발 올인원 패키지 Online)

패스트캠퍼스 챌린지 28일차

ywangnon 2021. 11. 28. 22:22

어제는 AVPlayerItem에서 asset함수가 어떻게 생성되는지 알아보았는데요.

명확하게 해결된 느낌은 아니라서 찜찜합니다.

 

오늘은 또 실습을 하다가 awakeFromNib에 대해 궁금해져서 알아보려고 합니다.

 

awakeFromNib은 테이블뷰든 콜렉션뷰든 셀을 커스텀하게 되면 자주 보입니다.

퀵 헬프로 알아보려해도 뜨는 것도 없다보니 사용하면서 대충 이런거구나 하면서 사용했었습니다.

 

awakeFromNib의 이름을 보았을 때, 'Nib파일에서 awake했다' 라는 의미이기에 인터페이스 빌더의 스토리보드에서 화면을 가져오거나 구성한 이후가 아닐까 싶은 느낌으로 이해했습니다. 그 중에서도 단어 awake느낌이 load된 이후의 느낌이어서 cell에서의 viewDidAppear의 느낌이지 않을까 생각했습니다.

 

awakeFromNib이 호출되는 시점은 정확하게는 객체가 초기화(인스턴스화)된 후 호출된다고 하네요.

어찌보면 완전히 틀린 것은 아니지만 또 꼭 맞다고 볼 수 는 없지 않을까 싶기도 하네요.

 

조금 더 알아봅시다.

viewDidLoad, ViewWillAppear, ViewDidAppear 의 차이는 아실겁니다.

간단하게 요약해서

메모리에 올라왔을때, 화면 나오기전, 화면 나온 후 정도로 요약할 수 있습니다.

여기서 awakeFromNib은 객체가 초기화된 후 라고 하니까 init이 된 후, ViewDidLoad와 ViewWillAppear 사이가 되지 않을까 싶습니다.

 

셀 자체에서 체크해보고 싶지만 셀은 UICollectionViewCell을 상속하는 UI입니다. 그러다보니 viewDidLoad와 viewWillAppear 등 UIViewController에서 사용하는 함수들이 없습니다.

아쉬운대로 콜렉션뷰의 viewDidLoad, viewWillAppear, viewDidAppear에서 표시하고, cell의 awakeFromNib에서도 표시하도록 해보겠습니다.

 

실습사진 1

예상과는 달리 홈에서 Load, willAppear함수를 한 후 awake함수가 실행됩니다.

 

생각해보면 메모리에 load하고 뷰를 구성할 준비를 하면서 willAppear함수가 실행되고 화면을 구성하면서 셀의 awakeFromNib함수가 실행된 후 모두 구성되면 DidAppear 함수가 실행된다고 생각할 수 있습니다.

 

셀만을 보면 초기화(이니셜라이즈) 한 후, awakeFromNib가 실행됩니다.

초기화하는 동안에는 프레임, 크기, 위치 등 뷰 관련된 것들은 제대로 만들어지지 않은 상태입니다.

그래서 뷰에 관련없는 것들은 init 함수에서 다루고, 인터페이스빌터(스토리보드)에 연결된 값들 또는 frame, layer를 다룰 때는 awakeFromNib에서 다룹니다.

그리고 오토레이아웃이나 화면 구성은 그 이후에 해줍니다.

 

프로젝트에서도 awakeFromNib에서 인터페이스 빌더와 연결된 @IBOutlet 값들을 다루고 있고, UI를 업데이트하기 위해서 updateUI함수를 만들어서 홈에서 cell을 생성한 이후에 따로 호출해줍니다.

 

실습사진 2

 

전에는 감으로 뚝딱뚝딱 만들었는데 이번에 명확하게 해결하고 넘어가는 느낌이 듭니다.

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

 

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #iOS앱개발올인원패키지Online.