[Swift] awakeFromNib() 정리

최승원·2022년 8월 30일
0

TIL (Today I Learned)

목록 보기
20/21

awakeFromNib()

커스텀 View 클래스가 처음 만들어져서 초기화 되었는데, 크기나 위치와 같은 속성이 완벽하지 않은 상태

UIView에서 상속 받은 커스텀 View 클래스를 만들고 (오른쪽 탭 inspector에서 지정하는 방식으로) 인터페이스 빌더에 지정하면 아카이브되었던 커스텀 View 클래스는 xib 파일에 언아카이브된다.

이때 init(coder:)가 호출되고 내부 속성이 초기화된다

일부는 이 때 의미없는 값으로 초기화되거나 IBOutlet을 비롯한 객체 참조 관계가 불명확할 수 있다.

  • init 시점에서는 frame과 관련된 크기, 위치 등 뷰가 완벽하게 만들어지지 않은 상태
  • 이와같이 인터페이스 빌더에서 연결된 객체의 변수를 사용하려고 할때 awakeFromNib()을 사용함
  • 이렇게 awakeFromNib()은 객체를 인스턴스화 한 후(init()이 호출된 후) 호출된다.

nib, xib

nib(NeXT Interface Builder)

뷰의 요소들(객체들)의 참조 관계를 나타낸 파일

뷰의 layout, display등의 요소들을 object graph로 만들어서 직렬화한 파일

xib(XML Interface Builder)

인터페이스 빌더에서 구성한 모든 정보는 .xib파일로 저장. 이후 프로젝트 컴파일 시 바이너리파일인 .nib파일이 되는 것

아카이브와 언아카이브

아카이브

객체들의 참조 관계를 따라 데이터를 저장하는 방식

iOS에서 모델 객체를 저장하는 방법 중 하나이며 가장 흔한 방법

  • 객체 아카이브: 객체 그래프를 따라 객체의 데이터 내용을 저장하는 방식
  • 객체 그래프: 객체들의 참조 관계를 나타낸 모습

언아카이브

아카이브한 데이터로부터 객체를 생성

참조

[TIL] Swift. awakeFromNib
[iOS - swift] nib, xib, Placeholders, Files's Owner, First Responder, Responder Chain 개념
[iOS - swift] Archive(아카이브), 아카이빙, 언아카이빙, NSCoding

profile
문의 사항은 메일로 부탁드립니다🙇‍♀️

0개의 댓글