ν΄λ‘μ
ν΄λ‘μ λ λ€μν ννλ‘ ννμ΄ κ°λ₯νλ€.
- νν ν΄λ‘μ : ν¨μμ λ§μ§λ§ 맀κ°λ³μλ‘ μ λ¬λλ ν΄λ‘μ λ ννν΄λ‘μ λ‘, ν¨μ λ°μ ꡬνλ μ μλ€.
- λ°ν νμ μλ΅ : μ»΄νμΌλ¬κ° ν΄λ‘μ μ λ°ν νμ μ μ μΆν μ μλ κ²½μ°, λ°ν νμ μ μλ΅ν μ μλ€.
- 맀κ°λ³μ μ΄λ¦ μλ΅ : 맀κ°λ³μμ μ΄λ¦μ΄ νμ μκ³ , μ»΄νμΌλ‘κ° νμ μ μ μΆν μ μλ κ²½μ°, μΆμ½λ μ λ¬ μΈμ ννλ‘ μ¬μ©ν μ μλ€.
- μμμ λ°ν : λ°ν κ°μ΄ μλ κ²½μ°, ν΄λ‘μ μ 맨 λ§μ§λ§ μ€μμ returnμ μλ΅ν μ μλ€.
1. λ°ν νμ μλ΅
calculate ν¨μμ method 맀κ°λ³μλ Intνμ΄ λ°νλλ€λ κ²μ μ»΄νμΌλ¬λ μκ³ μκΈ°μ ν΄λ‘μ Έμμ λ°ν νμ μ λͺ μν΄μ£Όμ§ μμλ λλ€. νμ§λ§ in ν€μλλ μλ΅ν μ μλ€.
let result = calculate(a: 10, b: 20, method: {(left: Int, right:Int) in
return left + right
}
// νν ν΄λ‘μ
let result = calculate(a: 10, b: 20, {(left: Int, right: Int) in
return left + right
}
2. 맀κ°λ³μ μ΄λ¦ μλ΅
let result = calculate(a: 10, b: 20, method: {
return $0 + $1
}
// νν ν΄λ‘μ
let result = calculate(a: 10, b: 20, {
return $0 + $1
}
3. μμμ λ°ν
ν΄λ‘μ κ° λ°ννλ κ°μ΄ μλ€λ©΄ λ§μ§λ§ μ€μ μμμ μΌλ‘ νν κ°λ₯
let result = calculate(a: 10, b: 20) {
$0 + $1
}
// ν μ€λ‘ νν κ°λ₯
let result = calculate(a: 10, b:20) { $0 + $1 }
νλ‘νΌν°
νλ‘νΌν°λ ꡬ쑰체, ν΄λμ€, μ΄κ±°νμ μμλ μμλ λ³μλ₯Ό λ§νλ€. μ΄κ±°νμλ μ°μ° νλ‘νΌν°λ§ μ¬μ© κ°λ₯νκ³ , μ°μ° νλ‘νΌν°λ μ½κΈ° μ μ©(getter)λ§μΌλ‘λ ꡬν κ°λ₯νμ§λ§ μ°κΈ° μ μ©(setter)λ§μΌλ‘λ ꡬνν μ μλ€. νλ‘νΌν°λ ν¬κ² 3κ°μ§λ‘ λλλ€.
- μ μ₯ νλ‘νΌν°
- μ°μ° νλ‘νΌν°
- νμ νλ‘νΌν°
1. μ μ₯ νλ‘νΌν°
let, var ν€μλλ₯Ό ν΅ν΄ μμ±νλ μΈμ€ν΄μ€ λ³μλ μμμ΄λ©°, ꡬ쑰체, ν΄λμ€μμλ§ μ¬μ© κ°λ₯νλ€.
struct Person {
var name: String
var age: Int
}
+) ꡬ쑰체μμ μ μ₯ νλ‘νΌν°λ₯Ό letμΌλ‘ μ μΈνλ©΄ μΈμ€ν΄μ€ μμ± μ΄ν κ°μ λ³κ²½ν μ μλ€.
struct Person {
let name: String
var age: Int
}
let p1 = Person(name: "kodo", age: 25)
p1.age = 26 // μ»΄νμΌ μ€λ₯!
var p2 = Person(name: "kodo", age: 25)
p2.age = 26 // OK!
μ΄μ λ€λ₯΄κ² ν΄λμ€λ κ°μ λ³κ²½ν μ μλ€. μλνλ©΄ ν΄λμ€λ μ°Έμ‘° νμ , ꡬ쑰체λ κ° νμ μ΄κΈ° λλ¬Έμ΄λ€.
2. μ§μ° μ μ₯ νλ‘νΌν°
μ§μ° μ μ₯ νλ‘νΌν°λ κ°μ΄ μ²μμΌλ‘ μ¬μ©λκΈ° μ μλ κ³μ°λμ§ μλ νλ‘νΌν°μ΄λ€. λ§ κ·Έλλ‘ κ°μ΄ μ²μμΌλ‘ μ¬μ©λκΈ° μ μλ κ°μ κ°μ§μ§ μκΈ°μ λ°λμ var ν€μλλ‘ μμ±ν΄μΌ νλ€. μλνλ©΄ μμλ μ΄κΈ°νκ° λκΈ° μ μ νμ κ°μ κ°λ νλ‘νΌν°μ΄κΈ° λλ¬Έμ΄λ€. 볡μ‘ν κ³μ° μμ μ μ§μ° νλ‘νΌν°λ‘ μ μΈνκ³ μ¬μ©νλ©΄ μ€μ λ‘ μ¬μ©λκΈ° μ , μ¦ μΈμ€ν΄μ€κ° μ¬μ©λκΈ° μ μλ μ€νλμ§ μμ μΈμ€ν΄μ€ μ΄κΈ°ν μμ μ 볡μ‘ν κ³μ°μ νΌν μ μλ€.
class DataImporter {
// μΈλΆμμ λ°μ΄ν°λ₯Ό κ°μ Έμ€λ ν΄λμ€
var fileName = "data.txt"
}
class DataManager {
lazy var dataImporter = DataImporter()
var data = [String]()
//
let manager = DataManager
manager.data.append("First Data")
// DataImporter μΈμ€ν΄μ€λ μ΄ μμ μ μμ±λμ΄ μμ§ μμ
3. μ°μ° νλ‘νΌν°
μ°μ° νλ‘νΌν°λ μ€μ κ°μ μ μ₯νκ³ μλ κ²μ΄ μλλΌ κ²ν°μ μΈν°λ₯Ό ν΅ν΄μ κ°μ μ€μ νλ νλ‘νΌν°μ΄λ€.
struct Point {
var x: Double = 0.0, y: Double = 0.0
}
struct Size {
var width: Double = 0.0, height: Double = 0.0
struct Rect {
var start = Point()
var size = Size()
var center: Point {
get {
let centerX: Double = start.x + size.width / 2
let centerY: Double = start.y + size.height / 2
}
set(newCenter) {
start.x = newCenter.x - size.width / 2
start.y = newCenter.x - size.height / 2
}
}
}
// ꡬ쑰체λ μλμΌλ‘ μ΄κΈ°ν(μμ±μ)κ° μμ±λ¨
var square: Rect = Rect(start: start(x: 0.0, y: 0.0), size: Size(width: 10.0, height: 10.0))
let center: Point = square.center // μ°μ° νλ‘νΌν°(κ²ν°)λ₯Ό ν΅ν΄μ κ°μ κ³μ°
square.center = Point(x: 20.0, y: 20.0) // μ°μ° νλ‘νΌν°(μΈν°)λ₯Ό ν΅ν΄μ μλ‘μ΄ κ°μ ν λΉ
4. νμ νλ‘νΌν°
μΈμ€ν΄μ€ νλ‘νΌν°λ νΉμ μΈμ€ν΄μ€μ μν νλ‘νΌν°μ΄λ€. λ°λΌμ μΈμ€ν΄μ€κ° μμ±λ λλ§λ€ νλ‘νΌν° μμ μλ‘κ² μμ±λλ€. μ΄μ λ€λ₯΄κ² νμ νλ‘νΌν°λ νΉμ νμ μ μν νλ‘νΌν°λ‘ κ·Έ νμ μ ν΄λΉνλ λ¨ νλμ νλ‘νΌν°λ§ μμ±λλ€. νΉμ νμ μ λͺ¨λ μΈμ€ν΄μ€μ 곡ν΅μ μΌλ‘ μ¬μ©λλ κ°μ μ μν λ μ μ©νλ€. λν νμ νλ‘νΌν°λ νμ μ΄κΈ°νκ° λμ΄ μμ΄μΌ νλ©°, classλ μ€λ²λΌμ΄λ©μ΄ κ°λ₯ν νμ νλ‘νΌν°, staticμ λΆκ°λ₯ν νμ νλ‘νΌν°μ΄λ€.
5. νλ‘νΌν° μ΅μ λ²
μ κ°μ΄ μ€μ λ λλ§λ€ μ΄λ²€νΈλ₯Ό κ°μ§ν μ μλ μ΅μ λ²μ΄λ€. νλ‘νΌν° μ΅μ λ²λ μ§μ° μ μ₯ νλ‘νΌν°μμλ μ¬μ©ν μ μκ³ μ°μ° νλ‘νΌν°μμλ κ²ν°μμ κ°μ λ³νλ₯Ό κ°μ§νκΈ°μ λ°λ‘ μ΅μ λ²λ₯Ό μ μν νμκ° μλ€.
- willSet : κ°μ΄ μ μ₯λκΈ° μ§μ μ νΈμΆ
- didSet: μ κ°μ΄ μ μ₯λκ³ μ§νμ νΈμΆ
willSetμμ μ κ°μ 맀κ°λ³μ μ΄λ¦μ μ§μ νμ§ μμΌλ©΄ newValue, didSetμμ μ§μ νμ§ μμΌλ©΄ oldValueλ₯Ό κΈ°λ³Έ κ°μΌλ‘ μ¬μ©νλ€.
class StepCounter {
var totalSteps: Int = 0 {
willSet(newTotalSteps) {
print("[willSet νΈμΆ] \\(totalSteps) -> \\(newTotalSteps)")
}
didSet {
if totalSteps > oldValue {
print("[didSet νΈμΆ] \\(oldValue) -> \\(totalSteps)")
}
}
}
}
let stepCounter = StepCounter()
stepCounter.totalSteps = 200
stepCounter.totalSteps = 360
stepCounter.totalSteps = 896
// κ²°κ³Ό
[willSet νΈμΆ] 0 -> 200
[didSet νΈμΆ] 0 -> 200
[willSet νΈμΆ] 200 -> 360
[didSet νΈμΆ] 200 -> 360
[willSet νΈμΆ] 360 -> 896
[didSet νΈμΆ] 360 -> 896
π μ°Έκ³ ν κ²
'π» κ°λ° > iOS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[iOS / SwiftUI] ForEachλ‘ Viewλ₯Ό 리νν λ§ ν΄λ³ΌκΉμ? (0) | 2022.10.11 |
---|---|
[iOS / Swift] lim ν΄λ‘μ -> 0 (ν΄λ‘μ , κ·ΉνμΌλ‘ μ€μ¬λ³΄κΈ°) (0) | 2022.10.05 |
[iOS / Swift] μμ VS μ΅μ€ν μ (0) | 2022.09.27 |
[TIL] 22.08.25 (0) | 2022.08.25 |
[TIL] 22.08.24 (0) | 2022.08.24 |