iOS/Swift 상식

Swift - Convenience init

HJ39 2023. 1. 23. 20:16

Init의 종류에는 2가지가 존재한다.

  • Designated init
  • convenience init

Init은 멤버들을 초기화하고 상속받은 멤버들을 커스텀하기 위해 사용한다.

 

(Designated) Init

(Designated) Init은 우리가 클래스를 생성할 때 자주 사용했던 Init이다.

해당 Init은 클래스의 프로퍼티가 모두 초기화되게 만들어준다.

 

class Pet{
	var dog: String
    var cat: String
    
    init(dog: String, cat: String){
    	self.dog = dog
        self.cat = cat
    }
}

 

Convenience init

Convenience init은 Designated init을 보조하여 도와주는 역할이다.

말 그대로 보조이므로 Designated Init이 먼저 생성되어 있어야 사용할 수 있다.

 

class Pet{
	var dog: String
    var cat: String
    
    init(dog: String, cat: String){ // → 1번
    	self.dog = dog
        self.cat = cat
    }
    convenience init(cat: String){ // → 2번
    	self.init(dog: "Pomi", cat: cat)
    }
}

convenience 내부에서는 같은 클래스의 자신을 제외한 다른 Initializer를 호출해야 한다.

위 예제에서는 2번 convenience Init을 제외한 Initializer는 1번이므로 1번 Initializer를 호출해야 한다.

 

# 참고한 사이트

  1. https://zeddios.tistory.com/141

'iOS > Swift 상식' 카테고리의 다른 글

Swift - Optional  (0) 2023.01.23
Swift - Any vs AnyObject  (0) 2023.01.23
Swift - Copy On Write(COW) 동작 방식  (0) 2023.01.23
Swift - Class 성능 향상 시키는 방법  (0) 2023.01.07
iOS - Storyboard vs Code  (0) 2023.01.07