(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 ) 👉 이미지 출처 및 자세한 설명은 이 곳을 눌러주세요.