728x90
mutatingμ΄λ?!
κ° νμ (ꡬ쑰체μ μ΄κ±°ν)μ μΈμ€ν΄μ€ λ©μλμμ μμ λ΄λΆμ κ°μ λ³κ²½νκ³ μ ν λ μ¬μ©νλ ν€μλ.
ꡬ쑰체 λ©μλμμ ꡬ쑰체 νλ‘νΌν°λ₯Ό μμ ν λλ mutating ν€μλλ₯Ό μ¬μ©ν΄ ν΄λΉ λ©μλκ° νΈμΆ λμμλ νλ‘νΌν°κ° λ³κ²½ λ μ μμμ λͺ μν΄μΌ ν©λλ€.
struct Person {
var name = "νκΈΈλ"
mutating func changeName(name: String) {
self.name = name
}
}
var person = Person()
var person2 = person // μ°Έμ‘°
var person3 = person // μ°Έμ‘°
p2.x = 3 //COW μ€μ 볡μ¬κ° μΌμ΄λ¨
λ μμλ³ΌκΉμ?!
- λ³΄ν΅ κ° νμ
μ νλ‘νΌν°λ μΈμ€ν΄μ€ λ©μλμμ μμ ν μ μμ΅λλ€.
κ·Έλ¬λ ꡬ쑰체λ μ΄κ±°νμ μΈμ€ν΄μ€ λ©μλμμ νλ‘νΌν°λ₯Ό μμ νκΈΈ μνλ€λ©΄ mutatingμ μ±νν΄μ ν μ μμ΅λλ€.
mutatingμ μ±ννλ©΄ λ©μλ λ΄μμ νλ‘νΌν°λ₯Ό λ³κ²½ν μ μμΌλ©° λ©μλκ° μ’ λ£λλ©΄ λ³κ²½ λ΄μ©μ΄ μλ ꡬ쑰μ λ€μ κΈ°λ‘λλ λ°©μμ λλ€. - Structλ κ° νμ μ΄λΌμ μ€ν λ©λͺ¨λ¦¬μ μ μ₯μ΄ λκ³ , ν λ΄λΆμ μ‘΄μ¬νμ§ μκΈ° λλ¬Έμ ꡬ쑰체λ₯Ό μ λ¬ν λ κ³μν΄μ 볡μ¬λ©λλ€.
- swiftλ κ°μ΄ λ³κ²½λ λλ§ μ€μ 볡μ¬λ₯Ό νλ COW(copy on write)λ°©μμ μ±μ©νκ³ μλλ° κ΅¬μ‘°μ²΄ νλ‘νΌν°λ κ°μ λ³κ²½ν λ swiftκ° μ§κ΄μ μΌλ‘ μ μ μμ§λ§, ꡬ쑰체 λ©μλμμ mutating ν€μλ μμ΄ νλ‘νΌν°λ₯Ό λ³κ²½νκ²λλ©΄ μΈμ μ€μ λ‘ λ³΅μ¬λ₯Ό ν΄μΌνλμ§ μ μ μμ΅λλ€. λ°λΌμ mutating ν€μλλ ν΄λΉ λ©μλκ° νΈμΆλλ©΄ μ€μ 볡μ¬λ₯Ό ν΄μΌνλ€κ³ μλ €μ£Όλ μν μ νλ€κ³ λ³Ό μ μμ΅λλ€.
- λ³μμ mutatingμ μ μ°λ μ΄μ λ var, let ν€μλλ₯Ό ν΅ν΄ μ΄λ―Έ μ»΄νμΌλ¬κ° μκ³ μκΈ° λλ¬Έμ λλ€.
- mutating λ©μλλ μμμ μΈ μμ±μΈ selfμ μμ ν μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό ν λΉν μ μμ΅λλ€.
struct Money {
var myMoney = 0
mutating func spendMoney(myMoney deltaMoney: Int) {
self = Money(myMoney: myMoney - deltaMoney)
}
}
728x90
'π Apple > Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] Firestoreμμ Document Idλ₯Ό λ³κ²½νκ³ μΆμ΄μ.. (1) | 2024.01.22 |
---|---|
[Swift] DEBUG, RELEASE λΆκΈ° μ²λ¦¬ν κ±°μμ (Swift Compiler, μ μ²λ¦¬λ¬Έ, #if DEBUG) (0) | 2024.01.13 |
[Swift] DI(Dependency Injection) μμ‘΄μ± μ£Όμ - νλ‘ν μ½ (0) | 2023.12.30 |
[Swift] Result νμ (0) | 2023.12.26 |
[Swift] dropFirst()μ removeFirst()μ μ°¨μ΄ (0) | 2023.09.01 |