반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 라이트모드
- 웹뷰
- UIScrollView
- Firebase
- UITabBarController
- ios
- Observable
- Realtime Database
- NavigationLink
- SwiftUI
- Java
- autolayout
- Apple
- remote config
- RxSwift
- subscript
- Swift
- Alamofire
- 문자열
- UIButton
- LazyHStack
- github
- swipe
- WebView
- dictionary
- SwiftLint
- 다크모드
- string
- gcd
- Android
Archives
- Today
- Total
점진적 과부하 개발 블로그
Swift initializer 본문
반응형
인스턴스 초기화하기 : init()
- 클래스, 구조체, 열거형(enum) 인스턴스가 생성되는 시점에서 해야 할 초기화 작업
- 인스턴스가 만들어지면서 자동 호출된다.
init(매개변수: 타입, ...) {
// 프로퍼티 초기화
// 인스턴스 생성시 필요한 설정을 해주는 코드 작성
}
designated initializer
- 모든 프로퍼티를 다 초기화 시키는 생성자
class Animal {
var dog: String = "강아지"
var cat: String = "고양이"
func display() {
print("당신의 강아지=\(dog), 당신의 고양이=\(cat)")
}
init(myDog: String, myCat: String) {
dog = myDog
cat = myCat
} // designated initializer
}
// init을 하나라도 직접 만들면 default initializer는 사라짐
var animal = Animal(myDog: "비비", myCat: "나비")
animal.display() // 인스턴스 메서드는 인스턴스가 호출
소멸자
- 인스턴스가 사라질 때 자동 호출
- deinit{}
self
- 현재 클래스 내 메서드나 프로퍼티를 가리킬 때 메서드나 프로퍼티 앞에 self.을 붙인다.
- 아래 소스에서는 self를 붙이거나 생략해도 된다.
- 옆의 소스에서는 매개변수와 구분하기 위해 반드시 써야한다.
class Animal {
var dog: String = "강아지"
var cat: String = "고양이"
func display() {
print("당신의 강아지=\(dog), 당신의 고양이=\(cat)")
}
init(dog: String, cat: String) {
self.dog = dog
self.cat = cat
}
}
// init을 하나라도 직접 만들면 default initializer는 사라짐
var animal = Animal(dog: "비비", cat: "나비")
animal.display() // 인스턴스 메서드는 인스턴스가 호출
Failable Initializer
- 실패 가능한 이니셜라이저, 실패하면 nil을 반환해준다. 그렇게 때문에? 옵셔널 타입으로 지정해 준다.
import Foundation
class Human {
var age: Int = 20 // stored property
var weight: Double = 70 // stored property
func display() {
print("나이=\(age), 몸무게=\(weight)")
}
init?(age: Int, weight: Double) {
if age <= 0 {
return nil
}
else {
self.age = age
}
self.weight = weight
} // failable initialize
}
failable initializer가 있는 클래스의 인스턴스 생성
var park = Human(age: 24, weight: 70)
park?.display() // 옵셔널 형으로 선언
if let park1 = park { // 1-2 옵셔널 바인딩
park1.display()
}
// 인스턴스 생성과 동시에 옵셔널 바인딩
if let park2 = Human(age: 20, weight: 80) {
park2.display()
}
// 인스턴스 생성하면서 바로 강제 언래핑
var park3 = Human(age: 30, weight: 90)!
park3.display()
// 옵셔널 인스턴스르 사용시 강제 언래핑
var park4 = Human(age: 40, weight: 100)
park4!.display()
반응형
'Swift > 문법' 카테고리의 다른 글
Swift 프로토콜(Protocol) (0) | 2022.01.08 |
---|---|
Swift 문법 정리 2 (0) | 2022.01.07 |
Swift 클래스(class) (0) | 2022.01.06 |
Swift 클로저(Closure) (0) | 2022.01.06 |
Swift guard문 (0) | 2022.01.05 |