티스토리 뷰
안녕하세요 :) 오늘은 Swift의 이니셜라이저! init과 convenience init의 차이점을 볼거에요.
시작하겠습니다XD
Designated init과 convenience init의 차이
다들 아시다시피,
Designated init은 Swift의 초기화 이니셜라이저입니다.
이 init은 클래스의 모든 프로퍼티가 초기화 될 수 있도록 해줘야해요.
이름은 Designated init(지정 이니셜라이저)이지만, 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
}
}
바로 이렇게 말이죠ㅎㅎ
만약 저 init의 파라미터에서 클래스 프로퍼티가 하나라도 빠지게되면,
이렇게 오류를 내게 됩니다.
그러면 convenience init은 무엇이냐?
엄밀히 말하면 convenience init은 "보조 이니셜라이저"에요.
클래스의 원래 이니셜라이저인 init을 도와주는 역할을 하는 아이죠.
Designated init의 파라미터 중 일부를 기본값으로 설정해서, 이 convenience init안에서 Designated init을 호출 하여 초기화를 진행할 수 있어요.
그러니 convenience init을 사용하려면 Designated init이 꼭 먼저 선언되어야겠죠? ㅎㅎ
"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: "zedd", age: age, gender: gender)
}
}
바로 저렇게 쓸 수 있습니다. 이렇게 해도 오류가 나지않죠 ㅎㅎ
저 파라미터로 넘겨주지 않은 값은 내가 그냥 임의로 지정하며, 파라미터로 넘어간 것들만 넣어주면 됩니다.
ㅎㅎ어려운건줄 알았는데 정말 쉬운거였어요!! 후후
오늘도 도움이 되었으면 좋겠어요 💕
'Swift' 카테고리의 다른 글
JSONSerialization / jsonObject (0) | 2017.07.27 |
---|---|
Swift ) initializer를 살펴보자 (3) | 2017.07.22 |
Swift3 ) 왕초보를 위한 날짜와 시간(Date)사용해보기 (1/2) (0) | 2017.07.14 |
Swift3 ) How to convert Array/Dictionary/Set to String in Swift(배열/집합/사전을 문자열로 바꾸는 방법) (0) | 2017.07.13 |
Swift3 ) Collection - Set사용해보기 (1) | 2017.07.12 |
- SwiftUI
- Combine
- IOS
- WWDC
- swift3
- Accessibility
- WKWebView
- 스위프트 문법
- swift array
- swift sort
- 피아노
- Xcode
- actor
- np-hard
- ios 13
- Swift
- np-complete
- github
- swift delegate
- 회고
- fastlane
- 제이슨 파싱
- swift 공부
- UIBezierPath
- swift tutorial
- Git
- FLUTTER
- WidgetKit
- 스위프트
- iOS delegate
- Total
- Today
- Yesterday