아주 간단히 요약하자면, 다음과 같다. 1. designated init(지정 생성자) 초기화에 반드시 필요한 생성자이다. 무조건 designated init이 불려야 객체가 생성된다. 2. convenience init(보조 생성자) 초기화에 반드시 필요하진 않다. 하지만, designated init이 가진 인자가 아닌 다른 인자로 초기화를 하고 싶을 때 사용한다. 그런데 방금 무조건 designated init이 불려야한다고 했기에, 이 생성자 내부에서 반드시 designated init을 불러야 한다. 다음은 인자가 없는 init을 가진 커스텀뷰를 만들고 싶을 때의 예이다. class CustomView: UIView { convenience init() { self.init(frame: .zer..
designated init

1. 문제 상황 작업중 UIView를 상속받은 커스텀 뷰를 만드는 과정에서 super.init()을 호출할 경우 오류가 발생하여 UIView()는 어떤 이니셜라이저를 호출하는지 의문이 생겨 찾아보았다. class customView: UIView { init() { super.ini() //여기서 에러가 발생함. UIView는 UIView() 이렇게 초기화를 할 수 있었는데 대체 왜지?? } } 2. 혹시 UIView에 convenience init()이 있나? 구글링을 해보니 어느 블로그에서는 UIView()가 NSObject의 init()을 호출한다고 하였다. 그런데 아래와 같은 근거로, 이렇게 동작하지는 않는다고 판단하였다. superclass(NSObject)에서 subclass(UIView)의 ..