develop

Require 본문

iOS

Require

pikachu987 2021. 1. 29. 20:34
반응형
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