develop
Require 본문
반응형
class Example1 {
var value: Int?
required init(value: Int?) {
self.value = value
}
}
Required를 init앞에 붙이면 필수로 init을 상속받은 곳에서 구현해야 한다. 그리고 반드시 override되어 야 하므로 override를 붙이지 않고 required를 붙여준다.
class Example2: Example1 {
required init(value: Int?) {
super.init(value: value)
}
}
protocol에서 init를 사용하면 자동으로 required가 된다.
protocol ExampleProtocol {
init()
}
class Example: ExampleProtocol {
required init() {
}
}
하지만 struct에서는 required init을 안해줘도 된다.
protocol ExampleProtocol {
init()
}
struct Example: ExampleProtocol {
}
그 이유는 2021/01/26 - [iOS] - Struct initialization Struct에서는 자동으로 이니셜라이즈가 되기 때문이다.
하지만 protocol에서 init의 형태와 struct에서 자동으로 이니셜라이즈되는 형태가 다르면 protocol의 init형태를 구현해주어야 한다.
protocol ExampleProtocol {
init(value1: Int)
}
struct Example: ExampleProtocol {
var value1: Int?
var value2: Int?
init(value1: Int) {
self.value1 = value1
}
}
반응형
'iOS' 카테고리의 다른 글
Reference Equal 참조 비교하기 (0) | 2021.01.31 |
---|---|
Struct Mutating (0) | 2021.01.30 |
Class convenience init (0) | 2021.01.28 |
Class Struct == Operator (0) | 2021.01.27 |
Struct initialization (0) | 2021.01.26 |
Comments