아주 간단히 요약하자면, 다음과 같다.
1. designated init(지정 생성자)
초기화에 반드시 필요한 생성자이다.
무조건 designated init이 불려야 객체가 생성된다.
2. convenience init(보조 생성자)
초기화에 반드시 필요하진 않다.
하지만, designated init이 가진 인자가 아닌 다른 인자로 초기화를 하고 싶을 때 사용한다.
그런데 방금 무조건 designated init이 불려야한다고 했기에, 이 생성자 내부에서 반드시 designated init을 불러야 한다.
다음은 인자가 없는 init을 가진 커스텀뷰를 만들고 싶을 때의 예이다.
class CustomView: UIView {
convenience init() {
self.init(frame: .zero)
}
override init(frame: CGRect) {
super.init(frame: frame)
}
}
주의할 점은 convenience init은 subclass에서 호출하여 사용할 수 없다.
'🍎 Apple > iOS' 카테고리의 다른 글
URLSession 의존성 제거하기 (0) | 2023.10.28 |
---|---|
[iOS] assertionFailure, 배포버전에선 터지지 않도록 하기 (0) | 2023.10.26 |
[iOS] NSCoding, 내 마음 속에.. 아니 Data에 저장하고 싶을 때 (0) | 2023.10.22 |
[iOS] required init?(coder: NSCoder) 이게 뭔데 자꾸 만들어줘 (0) | 2023.10.22 |
[iOS] 어디서 문제가 생긴걸까?? Log를 찍어보자. (0) | 2023.10.05 |