์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- designpattern
- reactorkit
- XCTest
- raywenderlich
- visionOS
- ios
- Xcode
- combine
- Flutter
- node.js
- TCA
- realm
- Swfit
- CollectionView
- ํจ์คํธ์บ ํผ์ค
- ํ๋ก๊ทธ๋๋จธ์ค
- rxcocoa
- BFS
- SwiftUI
- UIKit
- RxSwift
- arkit
- Kuring
- ๋ฐฑ์ค
- tableView
- Lv2
- SnapKit
- BOJ
- swift
- MVVM
- Today
- Total
lgvv98
[iOS/Swift] init๊ณผ super.init์ ๋ํด์ ์์๋ณด์. ๐ค ๋ณธ๋ฌธ
[iOS/Swift] init๊ณผ super.init์ ๋ํด์ ์์๋ณด์. ๐ค
๐ฅ ์บ๋ฟ๋งจ 2022. 2. 25. 20:40init๊ณผ super.init์ ๋ํด์ ์์๋ณด์.
โ init๊ณผ super.init์ ๋ํด์ ์์๋ณด์.
๊ฐ๋ฐ์ ํ๋ฉด์ ํ ์คํธ์ฝ๋ ์์ฑ์ ์ํด์ init์ผ๋ก ํ๋กํผํฐ๋ค์ ์ด๊ธฐํ ์ํค๋ค ๋ณด๋ init์ ๋ํด์ ๊ถ๊ธ์ฆ์ด ์๊ฒผ๋ค.
๊ทธ๋ผ ์ ๋ฆฌ ใฑใฑ
SwiftUI๋ฅผ ํตํด์ ์ฝ๋๋ฅผ ์์ฑํด ๋ณด์์
โ init์ ๋ํด์ ํฐ ํ๋ง ์ก๊ณ ๊ฐ์๋ฉด
1. ์ด๊ธฐํ ๋ฉ์๋์ ์ด๋ฆ์ init์ผ๋ก ํต์ผ๋๋ค.
2. ๋งค๊ฐ๋ณ์์ ๊ฐ์, ์ด๋ฆ, ํ์ ์ ์์๋ก ์ ์ํ ์ ์๋ค.
3. ๋งค๊ฐ๋ณ์์ ์ด๋ฆ๊ณผ ๊ฐ์, ํ์ ์ด ์๋ก ๋ค๋ฅธ ์ฌ๋ฌ ๊ฐ์ ์ด๊ธฐํ ๋ฉ์๋๋ฅผ ์ ์ํ ์ ์๋ค.
4. ์ ์๋ ์ด๊ธฐํ ๋ฉ์๋๋ ์ง์ ํธ์ถ๋๊ธฐ๋ ํ์ง๋ง, ๋๋ถ๋ถ ์ธ์คํด์ค ์์ฑ ์ ๊ฐ์ ์ ์ผ๋ก ํธ์ถ๋๋ค.
โ ์๋ ์ฝ๋๋ฅผ ๋ณด์.
class Student {
var age: Int
var name: String
init() {
self.age = -1
self.name = "ํ๋ผ๋ฏธํฐ 0๊ฐ"
}
init(age: Int) {
self.age = age
self.name = "ํ๋ผ๋ฏธํฐ 1๊ฐ"
}
init(age: Int, name: String) {
self.age = age
self.name = name
print("Student init")
}
}
ํ์์ ๋ํ struct๋ฅผ ๋ง๋ค์๋๋ฐ ์ด๊ธฐํ๋ฅผ ์ ๋ ๊ฒ ๋ฃ์ด์ ์์ ๋กญ๊ฒ ํ ์ ์๊ฒ ํด๋ด.
๊ทธ๋ ๋ค๋ฉด ํ์์ด ํ๊ณผ์ ์ํด์๋ค๊ณ ํ๋ฉด ๋ค๋ฅธ ๊ตฌ์กฐ์ฒด๊ฐ ํ์ํ๊ฒ ์ง?
ํ๊ณผ๋ ํ์ ๊ตฌ์กฐ์ฒด๋ฅผ ์์๋ฐ์์ ๊ตฌํ ใฑ
class Department: Student {
var grade: Float
override init() {
self.grade = 3.0
super.init(age: 0, name: "")
}
init(age: Int, name: String, grade: Float) {
self.grade = grade
super.init(age: age, name: name)
print("Department init")
}
}
๋ณด์ด๋๊ฐ?
init์ ์ด๋ฐ์์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
๐ ์ฌ๊ธฐ์ ์ ๊น!
Department(age: 25, name: "lgvv", grade: 4.4)
์ด๊ธฐํ๋ฅผ ์คํํ๋ฉด ์ด๋ค ์์๋ก print๋ฌธ์ด ์ฐํ๊น?
๊ฒฐ๊ณผ๋ ๋ฐ๋ก
Student init // ์คํ 1
Department init // ์คํ 2
๐ก ์ฌ๊ธฐ์ ์ฃผ!๋ชฉ!
โ override init๊ณผ super.init ์ ์ด๋ป๊ฒ ์ดํดํด์ผ ํ ๊น?
override init์ Student์ ๊ตฌ์กฐ์ฒด์ ์ ์๋์ด ์๋ init ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๋ ์ ์ฉํ๋ ํค์๋์ด๋ค.
๊ทผ๋ฐ ์ ์ฌ์ฉ?
๊ทธ ์ด์ ๋ ๋ฐ๋ก, Department์ ๊ฒฝ์ฐ Student์ ์ ์ธ๋ init์ ์ค๋ฒ๋ผ์ด๋ํ์ฌ ์ฌ์ฉํ๊ณ ์๋๋ฐ, Department์์ override ํค์๋๋ฅผ ๋ถ์ฌ์ผ ํ๋ค. ๊ทผ๋ฐ ๋ฌธ์ ๊ฐ Department์ ๊ฒฝ์ฐ์๋ Student์์ ์ด๊ธฐํ ๋ ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ด์ ์ด ๊ฒฝ์ฐ์๋ ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋๊ณ , ์ฐ๋ฆฌ๋ ๊ทธ์ ๋ง๊ฒ ๋์ํด์ฃผ๋ฉด ๋๋ค.
์ฐ๋ฆฌ๋ ์ด๋ฐ ๊ฒ์ ๋ฐ๋ก ์ด๊ธฐํ ๊ตฌ๋ฌธ ๋ธ๋ฆฌ๊ฒ์ด์ ์ด๋ผ๊ณ ํ๋ค.
โ ์ด๊ธฐํ ๊ตฌ๋ฌธ ๋ธ๋ฆฌ๊ฒ์ด์
์ด๊ธฐํ ๊ตฌ๋ฌธ ๋ธ๋ฆฌ๊ฒ์ด์ ์ด๋, super.init์ ์ญ ํ๊ณ ์ฌ๋ผ๊ฐ๋ ๊ฒ์ธ๋ฐ, ์๋ ๊ทธ๋ฆผ์ ํ ๋ฒ ๋ณด๋๋ก ํ์.
init์ ๋ํด์ ์ ์์๋ณด์๋ค. ํ ์คํธ ์ฝ๋๋ฅผ ์ํด ์ด๋ฅผ ์ฌ์ฉํ ์ผ์ด ๋ง์๋๋ฐ, ์์ผ๋ก๋ ๋ ๊ณต๋ถํด๋ณด๋๋ก ํ์.
๊ทธ๋ ๋ค๋ฉด ์ด๊ธฐํ ์์๋ ์ด๋ป๊ฒ ์งํ๋ ๊น?
์์ํด๋์ค์ ์กด์ฌํ๋ ๊ฒ๋ถํฐ ์ญ์์ผ๋ก ์งํ๋๋ค.
โ ์๋๋ ๋ด๊ฐ ํ ์คํธํด๋ณด๊ธฐ ์ํ ์ฝ๋
//
// ContentView.swift
// init_Training
//
// Created by Hamlit Jason on 2022/02/25.
//
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Text("Hello, world!")
.padding()
Button(
action: {
print("Button DidTap")
// _ = Department()
// print("next")
_ = Department(age: 25, name: "lgvv", grade: 4.4)
},
label: {
Text("๋ง์ด๋ฒํผ ์ด๊ฑฐ ํด๋ฆญ์ข ๋๊ฒํด์ฃผ์ธ์.")
}
)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
class Student {
var age: Int
var name: String
init() {
self.age = -1
self.name = "ํ๋ผ๋ฏธํฐ 0๊ฐ"
}
init(age: Int) {
self.age = age
self.name = "ํ๋ผ๋ฏธํฐ 1๊ฐ"
}
init(age: Int, name: String) {
self.age = age
self.name = name
print("Student init")
}
}
class Department: Student {
var grade: Float
override init() {
self.grade = 3.0
super.init(age: 0, name: "")
}
init(age: Int, name: String, grade: Float) {
print("Department init start")
self.grade = grade
super.init(age: age, name: name)
print("Deprtment init end")
}
}
'์ฝ๋ฉํ ์คํธ > ๐งธ Swift ๋ฌธ๋ฒ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] 10์ง์๋ฅผ 2์ง์๋ก ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ (0) | 2022.03.19 |
---|---|
[Swift5] extension Protocol (feat. optional func, objc) (0) | 2022.01.31 |
[๋ฌธ๋ฒ] swift remove element from array by value (0) | 2021.11.17 |
[Swift5] ๋์ ๋๋ฆฌ contains ํ์ฉ๋ฒ (0) | 2021.11.16 |
[Swift5] 2์ฐจ์ ๋ฐฐ์ด ์ ๋ ฌํ๊ธฐ ๋ฌธ๋ฒ tip! (0) | 2021.11.16 |