Swift ) init과 convenience init의 차이

Covenience init에 대해서 이해하려면 먼저 기본 init인 Designated init에 대해서 이해해야 한다.

Designated init

class Person {
		var name: String
		var age: Int
		var gender: String

		init(name: String, age: Int, gender: String) {
				self.name = name
				self.age = age
				self.gender = gender
		}
}

Untitled

Convenience init

Convenience init을 사용하기 위해선 Designated init이 먼저 선언 되어야 합니다.

Swift의 이니셜라이저 규칙 중 “Convenience init은 같은 클래스에서 다른 이니셜라이저를 호출해야한다.”라는 규칙이 있습니다.

class Person {
		var name: String
		var age: Int
		var gender: String
	
		init(name: String, age: Int, gender:String) {
				self.name = name
				self.age = age
				self.gender = gender
		}
		

		convenience init(age: Int, gender:String) {
				self.init(name: "Derrick", age: age, gender: gender)
		}
}