앱/SwiftUI
Swift) Convenience init, Designated init을 사용해서 초기화하기
진ddang
2023. 8. 28. 15:11
Designated init()이란
지정 이니셜라이저이다.
우리가 class를 사용하면 모든 프로퍼티에 초기값을 할당해줘야 하고 초기화 할수있게 해준다.
class SomeClass { var number: Int var name: String init(number: Int, name: String) { self.number = number self.name = name } }
하지만 이때 단 하나의 프로퍼티라도 초기화가 되지 않으면 에러를 발생시킨다.
convenience init()
💡 convenience init은 왜쓰는가?
바로 init을 할때, 모든 프로퍼티에 초기값을 일일히 넣어주는 작업을 하지 않고, 초기값을 자동으로 넣어주기 위해서 사용한다.
따라서 convenience init은 기본적으로 designated init을 호출한다.
왜냐? designated init을 호출한 거 중에서 몇개의 프로퍼티에 초기값을 넣어주는 작업이기 때문이다.
class SomeClass { var number: Int var name: String var value: Int init(value: Int, number: Int, name: String) { self.number = number self.name = name self.value = value } convenience init(number: Int, name: String) { self.init(value: 12, number: number, name: name) } }
이후 init을 해보면 다음과 같이 나온다.
기본 init과 value에 초기값으로 12가 들어가있는 init으로 두개를 사용할수 있게 된다.
기본적으로 초기값을 주는 경우랑은 뭐가 다른가요???
class AnotherClass { var number: Int var name: String var value: Int = 12 init(number: Int, name: String) { self.number = number self.name = name } }
조금더 명시적으로 인스턴스를 만들때 어떤값들을 초기화 할수있는지, 알려줄수 있다는 장점이 있다는것 뿐?
반응형