[Swift] Initializer(3) - required init?(coder:)
2022. 11. 10. 16:57
iOS/Swift
UIView와 UIViewController에서 designated Initializer를 정의하게 되면, 아래와 같은 에러를 보게된다. 'required' initializer 'init(coder:)' must be provided by subclass of 'UIView' 이 required init?(coder:)에 대해서 알아보도록 하자! 에러가 나는 이유 UIViewController와 UIView는 NSCoding이라는 protocol을 채택하고 있는데, NSCoding protocol은 아래의 method를 구현하도록 한다. func encode(with coder: NSCoder) { } required init?(coder: NSCoder) { } 저번 포스팅에서 말했듯이, requir..
[Swift] Initializer(2) - Class Initializer의 상속
2022. 11. 10. 00:27
iOS/Swift
Default Initializer가 Compiler에 의해 제공되는 경우 우선, default initializer가 제공되기 위해서는! class 내부에 initializer가 구현되어 있지 않아야 한다. 또한, initializer를 구현하지 않기 위한 조건은 모든 저장 프로퍼티들이 초기화되어 있어야 한다. class A { var num1 = 1 var str: String? //nil로 초기화 } 위의 조건을 만족하였을 때, Compiler에 의해 Default initializer를 제공받게 되고, Super Class의 모든(convienence, required, designated) initializer를 상속! 받게 된다. class Person { var age: Int init(ag..
[Swift] Initializer(1)
2022. 11. 9. 18:56
iOS/Swift
Swift에서 initializer란 객체를 초기화 하는것으로 initializer가 끝나게 되면, 저장 프로퍼티가 모두 값을 가지고 있어야 한다. 또한, Swift에서의 initializer는 값을 return 하지 않는다! Default Initializer Default initializer란, parameter로 아무것도 전달하지 않는 Initializer이다. 만약, 객체의 모든 저장 프로퍼티가 값을 가지는 경우 default initializer가 제공이 된다. class A { var num: Int init(){ self.num = 10 } } class B { var num: Int? let num2 = 10 } let a = A() //구현한 default initializer let ..