- Published on
π Swift - Struct vs Class
- Authors
- Name
- μ΄μ°½μ€
ꡬ쑰체(struct)μ ν΄λμ€(class)
Swiftμλ λ κ°μ§ λ°μ΄ν° νμ
μ΄ μμ΅λλ€. λ°λ‘ struct
μ class
μ
λλ€. μ΄λ μ λ κ°μΌλ‘ μ¬μ©νκ³ μμμ§λ§ μ ννκ² μμλ³΄κ³ μΆμ΄μ 곡λΆλ₯Ό ν΄λ³΄κ² μ΅λλ€.
κ° νμ vs μ°Έμ‘° νμ
μ μμ μ°¨μ΄λ‘ μ€λͺ
νμλ©΄ class
λ μ°Έμ‘° νμ
, struct
λ κ° νμ
μ
λλ€.
κ° νμ
μΈ struct
μ μμλ μΈμ€ν΄μ€λ€μ κ°μ 볡μ¬νμ¬ μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό λ§λ€μ΄ μ¬μ©ν©λλ€. μ°Έμ‘° νμ
μΈ class
μ μμλ μΈμ€ν΄μ€λ€μ μ°Έμ‘° κ°μ΄ μ λ¬λ©λλ€.
ν λΉ λ©λͺ¨λ¦¬ μμ
struct
κ° λ³΅μ¬ λ°©μμ μ¬μ©νλ ꡬ쑰체λ λ©λͺ¨λ¦¬μ μ€ν μμμ ν λΉλ©λλ€. λ°λΌμ μ€ν μμμ νΉμ§λ€μ κ°μ΅λλ€.
- Thread-Safeνλ€. (μ€λ λκ° λ 립μ μΌλ‘ μ¬μ©)
- ν λ²μ λͺ λ ΉμΌλ‘ ν λΉ&ν΄μ κ°λ₯ (μ€ν ν¬μΈν° μ¬μ©)
- μ»΄νμΌ μκ°μ ν¬κΈ° λ°°μ
class
μ°Έμ‘° λ°©μμ μ¬μ©νλ ν΄λμ€λ λ©λͺ¨λ¦¬μ ν μμμ ν λΉλ©λλ€. λ°λΌμ ν μμμ νΉμ§λ€μ κ°μ΅λλ€.
- λ°νμμ ν¬κΈ°κ° λ°°μ λλ€.
- Thread-Safeνμ§ μλ€. (μ€λ λκ° κ³΅μ νμ¬ μ¬μ©)
κΆμ₯νλ νμ μ?
μ νμ λλλ‘μ΄λ©΄ struct
λ₯Ό μ¬μ©νλ κ²μ κΆμ₯νκ³ μμ΅λλ€. λ©λͺ¨λ¦¬ κ΄λ¦¬ μμ λ³λμ μ°μ° κ³Όμ μ΄ νμνμ§ μκ³ μλλ λΉ λ₯΄κΈ° λλ¬Έμ
λλ€. κ·Έλ λ€λ©΄ class
λ μ μ¬μ©ν κΉμ?
μμ
class
λ μμμ΄ κ°λ₯ν©λλ€. extension
μ μ¬μ©νμ¬ κΈ°μ‘΄μ class
μμ νμ₯λ λ²μ μ class
λ₯Ό μ¬μ©ν μ μμ΅λλ€. μ΄ λ΄μ©μ μΆνμ λ°λ‘ λ€λ£¨κ³ λ§ν¬λ₯Ό λ¨κ²¨λλλ‘ νκ² μ΅λλ€!
κ·ΈλΌ μΈμ λ μΈκΉμ?
κ·Έλ λ€λ©΄ μΈμ struct
λ₯Ό, μΈμ class
λ₯Ό μ¬μ©ν΄μΌ ν κΉμ?
μμμ ν λ² μΈκΈνλλλ‘ μ νμ struct
λ₯Ό μ¬μ©νλ κ²μ κΆμ₯νκ³ μμ΅λλ€. Swiftμ struct
λ λ€λ₯Έ μΈμ΄μμλ class
λ§μ΄ κ°κ³ μλ νΈλ¦¬ν κΈ°λ₯λ€μ μλΉ μ μ§μν©λλ€.
Swiftμ struct
λ μ μ₯/μ°μ° νλ‘νΌν°, λ©μλ, μ¬μ§μ΄ νλ‘ν μ½κΉμ§ μ¬μ©ν μ μμ΅λλ€. μ€μ λ‘ μ νμ λλΆλΆμ νμ€ λΌμ΄λΈλ¬λ¦¬(μ«μ, λ¬Έμμ΄, λ°°μ΄, λμ
λ리 λ±)μ struct
λ₯Ό μ¬μ©νκ³ μμ΅λλ€.
- obj-c μΈμ΄μ μνΈ μ΄μ©ν λλ
class
λ₯Ό μ΄μ©
obj-cμ APIλ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό μ²λ¦¬ν λλ class
λ₯Ό μ¬μ©ν΄μΌλ§ ν©λλ€. λ°λΌμ μ΄λ° κ²½μ°μλ ν΄λμ€λ₯Ό μ¬μ©ν μ λ°μ μμ΅λλ€.
- κ³ μ ν κ°μ λν μ μ΄κ° νμν λλ class μ΄μ©
class
λ μ°Έμ‘° νμ
μ΄κΈ° λλ¬Έμ μ΄λ ν κ³³μμ κ°μ μμ νλλΌλ μ±μ λͺ¨λ κ³³μμ λ³κ²½μ΄ μΌμ΄λ©λλ€. μ΄λ° νμμ μλμ μΌλ‘ μνλ€λ©΄ class
λ₯Ό μ¬μ©νλ©΄ μ’μ΅λλ€.
- μμκ³Ό 곡μ λ₯Ό λͺ¨λΈλ§ ν λλ
struct
λ₯Ό μ΄μ©
class
μ struct
λ λͺ¨λ μμμ μ§μν©λλ€. νμ§λ§ struct
λ class
λ‘λΆν° μμλμ§λ λͺ»νκ³ , protocol
λ‘λΆν°λ§ μ°¨μ©λ μ μμ΅λλ€.
protocol
μ ν΄λμ€, ꡬ쑰체, μ΄κ±°ν λ°μ΄ν°λ€μ΄ μμν μ μμ§λ§ class
λ κ°μ class
λ€λΌλ¦¬λ§ μμμ΄ κ°λ₯νκΈ° λλ¬Έμ λ°μ΄ν°λ₯Ό μ€κ³ν λ μ°μ protocol
μ μ¬μ©ν΄λ³΄λ κ²μ μΆμ²ν©λλ€.
μ°Έκ³ μλ£