(UIKit - Programmatically 기준으로)
UIView를 상속받아 Custom View를 만들 때,
required init?(coder: NSCoder) {
// 객체의 Attribution 초기화 및 기타 초기화 작업 등
}
이 Argument Constructor를 반드시 구현해주어야 한다.
왜 구현을 해주어야 하는지 결론부터 말하자면,
IB (= Interface Builder)와의 상호작용을 위해서이다.
Storyboard를 이용하여 View를 구성하면
![]() | ![]() |
---|
XML 형식으로 작성되어지게 되는데
이 Storyboard를 Build하면 컴파일러에 의해 View들이 Encoding 되어 Binary Code로 변환되어 저장이된다.
아래 이미지가 Storyboard가 Encoding 되어지는 과정이다.
![]() | ![]() |
---|
Storyboard는 plist를 포함해 여러 xib 파일들을 가지고 있고
Build 시, 컴파일 과정을 거치면서 xib 파일들은 nib 파일들로 변환된다.
여기서
xib: 하나의 화면 또는 뷰를 나타낸 파일 (-> XML 파일 기반 형식으로 UI 요소를 정의)
nib: xib 파일의 View를 Encode하여 Binary Code 형태로 저장된 파일
이라고 생각하면 된다.
Encoding 과정으로 View가 Binary Code가 되면
Decoding 과정을 통해 시각적으로 인터페이스 빌더 환경에서 View를 볼 수 있어야 하는데,
required init?(coder: NSCoder) {}
이 Argument Constructor가 그 작업을 담당해 준다.
ref ) 👉 이미지 출처 및 자세한 설명은 이 곳을 눌러주세요.