반응형
안녕하세요🐶
빈지식 채우기의 비니🙋🏻♂️ 입니다.
오늘은 init 과 convenience init 의 차이점에 대해 알아보도록 하겠습니다.
1. (Designated) init
Designated init 이란 무엇인가?.?
바로 Swift의 초기화 이니셜라이즈 입니다. 즉 클래스에 선언된 모든 프로퍼티가 초기화 될 수 있게끔 해줘야합니다.
Swift 에서는 Designated 는 생략하고 init 으로만 씁니다 :)
import Foundation
class ConvenienceInit {
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
}
}
위와 같이 반드시 프로퍼티가 모두 초기화가 되어야 하는데,
만약 하나라도 빠지게 되면 아래와 같이 오류가 발생합니다.
2. convenience init
그럼! convenience init 은 무엇인가❗️
(Designated) init 을 보조하는 보조 이니셜라이저 입니다.
.
기존 init 의 파라미터 일부를 기본값으로 설정해서,
convenience init 내부에서 init 을 호출하여 초기화를 진행할 수 있습니다.
주의할 점❗️
convenience init 을 사용하려면 (Designated) init 이 반드시 선언되어야 한다.
그럼 어떻게 쓰는지 바로 코드로 확인해보도록 하겠습니다.
import Foundation
class ConvenienceInit {
var name: String
var age: Int
var gender: String
init(name: String, age: Int, gender: String) { // 반드시 init 선언이 되어야함
self.name = name
self.age = age
self.gender = gender
}
convenience init(age: Int, gender: String) { // name 에 기본값 설정
self.init(name: "bean", age: age, gender: gender)
}
}
위와 같이 쓸 수 있습니다.
결국은 convenience init 은 저희가 변수를 선언 시 Optional 로 선언할 수 있는데
?? (값) 이렇게 선언하는 것과 비슷하다고 볼 수 있습니다.
변수에 값이 없으면 선언한 초기값으로 설정되기 때문이죠!
감사합니다.
참고
반응형
'iOS📱 > Swift' 카테고리의 다른 글
[Swift] 클립보드 ( ClipBoard ) (0) | 2024.05.22 |
---|---|
[Swift] TextView HyperLink (0) | 2024.05.21 |
[Swift] Json Parsing ( JsonSerialization vs Codable ) (0) | 2024.02.23 |
[ Swift ] URLComponents 알아보기 (0) | 2023.06.15 |
[ Swift ] Expandable UITableView 만들기 (2) | 2023.05.23 |