[Swift] κ°νμ κ³Ό μ°Έμ‘°νμ ( Value Type vs Reference Type )
1μ°¨ μμ : 2021.06.06
μλ νμΈμ. μ΄λ² κΈμμλ μ€μννΈμ κ°νμ κ³Ό μ°Έμ‘°νμ μ μ°¨μ΄μ μ λ©λͺ¨λ¦¬μ μ μ₯λλ κ΄μ μμ λ€λ£¨μ΄λ³΄κ² μ΅λλ€πΆ
*μμ±κ°μμμμ κ°νμ κ³Ό μ°Έμ‘°νμ μ μλμ°¨μ΄κ° κΆκΈνλ€λ©΄? -> μμ±κ°μμλ (Property Observer) ?
Swiftμμ μλ£κ΅¬μ‘°λ€μ λ€μκ³Ό κ°μ νμ μ κ°μ§λλ€.
κ° νμ | μ°Έμ‘° νμ |
Structure Enumeration Tuple |
Class Closure |
/* Value Type */
struct testStruct {
var name = ""
var age = 0
}
/* Reference Type */
class testClass {
var name = ""
var age = 0
}
λνμ μΈ νμ μΈ Structμ Classλ₯Ό ν΅ν΄ λΉκ΅ν΄ λ³΄κ² μ΅λλ€.
κ°κ°μ κ°μ μμ±μ κ°μ§μ§λ§ λ©λͺ¨λ¦¬μ μ μ₯λλ λ°©μμ΄ λ€λ¦ λλ€.
ν μ₯μ κ·Έλ¦ΌμΌλ‘ νννλ©΄ λ€μκ³Ό κ°μ΅λλ€.
κ° νμ
// Value Type
var testStruct = testStruct()
/* λ³κ°μ μλ‘μ΄ μΈμ€ν΄μ€κ° μμ±λμ΄ κ°μ΄ 볡μ¬λ¨ */
var anotherStruct = value1
anotherStruct.name = "John Doe"
anotherStruct.age = 10 // testStruct.name: "", testStruct.age: 0
κ° νμ μΈ struct μ κ²½μ°, stack μμμ μ€μ λ°μ΄ν°κ° μ μ₯λ©λλ€.
κ·Έλ κΈ° λλ¬Έμ κ°μ μ λ¬ μ μ€μ λ°μ΄ν°κ° 볡μ¬λ©λλ€.
μ°Έμ‘° νμ
// Reference Type
var testClass = testClass()
/* μ£Όμ κ°λ§ 볡μ¬λλ―λ‘, κ°μ μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν΄ */
var anotherClass = ref1
anotherClass.name = "Jane Doe"
anotherClass.age = 17 // testClass.name: "Jane Doe", testClass.age: 17
μ°Έμ‘° νμ μΈ classμ κ²½μ°, heap μμμ μ€μ λ°μ΄ν°κ° μ μ₯λκ³ , stack μμμλ heap μμ λ©λͺ¨λ¦¬ μ£Όμκ° μ μ₯λ©λλ€.
κ·Έλ κΈ° λλ¬Έμ κ°μ μ λ¬μ μΈμ€ν΄μ€κ° μμΉν μ€μ μ£Όμ(= heap μμμ μ£Όμ)μ 볡μ¬μ΄λ©°,
κ²°κ³Όμ μΌλ‘ μ μ½λμμ ref2λ ref1μ μ°Έμ‘°λ₯Ό μ»μ΅λλ€. ( Retain Countλ 1 μ¦κ° )
let ν€μλ
letμΌλ‘ μ μΈλ μΈμ€ν΄μ€λ, μΈμ€ν΄μ€μ ν λΉλ stack μμμ λ©λͺ¨λ¦¬ 곡κ°μ λ³κ²½νμ§ λͺ»νκ² ν©λλ€.
λ°λΌμ stack μμμ μ€μ λ°μ΄ν°κ° μ μ₯λλ κ° νμ μΈμ€ν΄μ€ λ€μ μμ±μ μμ νμ§ λͺ»ν©λλ€.
νμ§λ§ stack μμμ heapμμμ λ©λͺ¨λ¦¬ μ£Όμκ° μ μ₯λλ μ°Έμ‘° νμ μΈμ€ν΄μ€λ€μ κ°λ¦¬ν€λ λμλ§ μμ νμ§ λͺ»ν λΏ, μμ±μ μμ ν μ μμ΅λλ€.
μ΄κ²μ΄ λ©λͺ¨λ¦¬ κ΄μ μμμ κ° νμ κ³Ό μ°Έμ‘° νμ μ μ°¨μ΄μ μ λλ€.
λ!
π€π’[μ°μ§±μ iOS λΈλ‘κ·Έ]π΅π»
iOSλ₯Ό 곡λΆνλ©΄μ λ°°μ΄ λ΄μ©μ κΈ°λ‘νκ³ μμ΅λλ€.
λ€μ κΈ: ARC - Memory
ARC - Memory
"Auto Reference Counting" λ μ΄μ μ¬μ©λμ§ μλ μΈμ€ν΄μ€κ° λ©λͺ¨λ¦¬μ λ¨μμλ€λ©΄ λ©λͺ¨λ¦¬ λμκ° λ°μν©λλ€. λ©λͺ¨λ¦¬ λμλ μ± μ±λ₯μ μ νλ‘ μ΄μ΄μ§κΈ° λλ¬Έμ μΈμ€ν΄μ€μ μ μ ν ν΄μ λ μ€μν μ΄
woozzang.tistory.com