develop

Class convenience init 본문

iOS

Class convenience init

pikachu987 2021. 1. 28. 20:33
반응형

convenience init은 편의 생성자라고 하는데

convenience init을 사용하면 같은 클래스에 있는 다른 init를 호출해야 한다는 규칙이 있다.

class Example1 {
    var value1: Int?
    var value2: Int?
    
    init(value1: Int?, value2: Int?) {
        self.value1 = value1
        self.value2 = value2
    }
    
    convenience init(value1: Int?) {
        self.init(value1: value1, value2: 5)
    }
}

let example = Example1(value1: 3)

나는 convenience init을 확장에서 자주 사용한다.

extension UITextField {
    convenience init(placeholder: String) {
        self.init()
        self.placeholder = placeholder
    }
}

let textField = UITextField(placeholder: "Hello")

원래 UITextField를 만들고 placeholder에 접근을 하는 두줄의 코드를 convenience init으로 한줄로 만들었다.

기본 Swift의 class나 라이브러리 같은 init을 만들수 없는 경우에 convenience init을 사용해서 간단한 코드로 만들 수 있다.

 

Struct에는 convenience를 사용할 수 없다.

 

반응형

'iOS' 카테고리의 다른 글

Struct Mutating  (0) 2021.01.30
Require  (0) 2021.01.29
Class Struct == Operator  (0) 2021.01.27
Struct initialization  (0) 2021.01.26
autoreleasepool  (0) 2021.01.25
Comments