μλ νμΈμ μ μΈμ λλ€:)
νλ‘νΌν° μλ¦¬μ¦ λ§μ§λ§!μΌλ‘ νμ νλ‘νΌν°μ λν΄ μ 리ν΄λ³΄κ² μ΅λλ€. λ°λ‘ μμν κ²μ~!
νμ νλ‘νΌν° (Type Properties)
μ΄μ μ μ 리νμλ μ μ₯ νλ‘νΌν°, μ°μ° νλ‘νΌν°λ λͺ¨λ νΉμ μΈμ€ν΄μ€μ μν μΈμ€ν΄μ€ νλ‘νΌν°μ λλ€.
μΈμ€ν΄μ€ νλ‘νΌν°λ μ΄λ ν νμ (class, struct λ±)μ μΈμ€ν΄μ€κ° μμ±λμμ λ μ¬μ©ν μ μλ νλ‘νΌν°λ‘, μΈμ€ν΄μ€λ₯Ό μλ‘ μμ±ν λλ§λ€ μλ‘μ΄ νλ‘νΌν°λ κ°μ΄ μμ±λκ³ , μΈμ€ν΄μ€λ§λ€ λ€λ₯Έ κ°μ μ§λ μ μμ΅λλ€.
κ°κ°μ μΈμ€ν΄μ€κ° μλ νμ μ체μ μνλ νλ‘νΌν°λ₯Ό νμ νλ‘νΌν°λΌκ³ ν©λλ€.
νμ νλ‘νΌν°λ νμ μ체μ μν₯μ λ―ΈμΉλ νλ‘νΌν°λ‘, μΈμ€ν΄μ€μ μμ± μ¬λΆμ μκ΄μμ΄ νμ νλ‘νΌν°μ κ°μ νλμ λλ€. κ·Έλ κΈ° λλ¬Έμ ν΄λΉ νμ μ λͺ¨λ μΈμ€ν΄μ€κ° 곡ν΅μΌλ‘ μ¬μ©νλ κ°(CμΈμ΄μ static μμμ μ μ¬), λͺ¨λ μΈμ€ν΄μ€μμ 곡μ©μΌλ‘ μ κ·Όνκ³ κ°μ λ³κ²½νλ λ³μ(CμΈμ΄μ static λ³μμ μ μ¬) λ±μ μ μν λ μ μ©ν©λλ€.
νμ νλ‘νΌν°μ μ’ λ₯
νμ νλ‘νΌν°λ μ μ₯ νμ νλ‘νΌν°, μ°μ° νμ νλ‘νΌν° μ΄λ κ² λ κ°μ§ μ’ λ₯κ° μμ΅λλ€.
μ μ₯ νμ νλ‘νΌν°λ λ³μ(var) νΉμ μμ(let)μΌλ‘ μ μΈν μ μμΌλ©°, μ°μ° νμ νλ‘νΌν°λ μ€μ§ λ³μ(var)λ‘λ§ μ μΈν μ μμ΅λλ€.
ν κ°μ§ μ£Όμν΄μΌν μ μ μ μ₯ νμ νλ‘νΌν°λ λ°λμ μ΄κΉκ°μ μ€μ ν΄μ£Όμ΄μΌ νλ€λ μ μ λλ€.
μ μ₯ μΈμ€ν΄μ€ νλ‘νΌν°μ κ²½μ°, μ΄κΉκ° μ€μ νΉμ μΈμ€ν΄μ€ μμ± μ μ΄λμ λΌμ΄μ λ₯Ό μ΄μ©ν΄ μ΄κΉκ°μ μ€μ ν΄μ€ μ μμμ΅λλ€. νμ§λ§ νμ μ체μλ μ΄λμ λΌμ΄μ κ° λ°λ‘ μμ΄ μ΄κΈ°ν ν κ³³μ΄ μκΈ° λλ¬Έμ λ°λμ μ μΈ μ μ΄κΉκ° μ€μ μ΄ νμν©λλ€.
λν, μ μ₯ νμ νλ‘νΌν°λ λ°λ‘ lazy ν€μλλ₯Ό λΆμ¬μ£Όμ§ μμλ μ§μ° μ°μ°λ©λλ€! κ·Έλ¦¬κ³ μ§μ°(lazy) μ μ₯ νλ‘νΌν°μλ μ‘°κΈ λ€λ₯΄κ² λ€μ€ μ€λ λ νκ²½μμ λμμ μ‘μΈμ€ λκ³ μλλΌλ λ¨ ν λ²λ§ μ΄κΈ°νλλ€λ 보μ₯μ λ°μ΅λλ€.
μ μ₯ νμ νλ‘νΌν°
- λ³μ νΉμ μμλ‘ μ μΈ κ°λ₯
- μ μΈ μ μ΄κΉκ° μ€μ νμ
- lazy ν€μλ μμ΄λ μ§μ° μ°μ°λ¨ (μ€μ λ‘ μ¬μ©λ λ μ΄κΈ°ν λ¨)
- λ€μ€ μ€λ λ νκ²½μμλ λ¨ ν λ²λ§ μ΄κΈ°νλλ€λ 보μ₯μ λ°μ
μ°μ° νμ νλ‘νΌν°
- μ€μ§ λ³μλ‘λ§ μ μΈ κ°λ₯
νμ νλ‘νΌν° ꡬ문
κΈ°λ³Έμ μΌλ‘ νμ νλ‘νΌν° μ μΈμ μν΄μλ static ν€μλλ₯Ό μ¬μ©ν©λλ€.
ν΄λμ€μμλ class ν€μλλ₯Ό μ΄μ©ν΄μλ νμ νλ‘νΌν°λ₯Ό μ μΈν μ μλλ°, static ν€μλλ₯Ό μ΄μ©ν μ μΈκ³Όμ μ°¨μ΄μ μ μλΈν΄λμ€μμ overridingμ΄ κ°λ₯νλ€λ κ²μ λλ€! μ¦, ν΄λμ€ λ΄λΆμμ class ν€μλλ‘ μ μΈλ νλ‘νΌν°λ μλΈν΄λμ€μμ μ¬μ μκ° κ°λ₯ν©λλ€.
ꡬ쑰체, ν΄λμ€, μ΄κ±°νμμ νμ νλ‘νΌν°λ₯Ό μ΄λ»κ² μ μΈνλμ§ μμ μ½λλ‘ μ΄ν΄λ΄ μλ€!
struct SomeStructure {
static let storedTypeProperty = "Some value."
static var computedTypeProperty: Int {
return 1
}
}
enum SomeEnumeration {
static var storedTypeProperty = "Some value."
static var computedTypeProperty: Int {
return 6
}
}
class SomeClass {
static var storedTypeProperty: Int = 1
static var computedTypeProperty: Int {
get {
return storedTypeProperty
}
set {
storedTypeProperty *= 2
}
}
class var overrideableComputedTypeProperty: Int {
return 107
}
}
κΈ°λ³Έμ μΌλ‘ static ν€μλλ₯Ό μ΄μ©ν΄ νμ νλ‘νΌν°λ€μ μ μΈνμΌλ©°, μ μ₯ νμ νλ‘νΌν°λ μμλ λ³μλ‘ λͺ¨λ μ μΈλ μ μλ λ°λ©΄ μ°μ° νμ νλ‘νΌν°λ μ€μ§ λ³μλ‘λ§ μ μΈλ κ²μ νμΈν μ μμ΅λλ€. λν, ν΄λμ€ λ΄λΆμμλ class ν€μλλ₯Ό μ΄μ©ν΄μλ νμ νλ‘νΌν°λ₯Ό μ μΈν μ μλ€λ μ λ νμΈ κ°λ₯ν©λλ€ :)
κ·Έλ°λ° ν κ°μ§ μ΄μν μ .. μ°μ° νλ‘νΌν°λ ν΄λμ€, ꡬ쑰체, μ΄κ±°νμ λͺ¨λ μ μκ° κ°λ₯νμ§λ§, μ μ₯ νλ‘νΌν°μ κ²½μ° ν΄λμ€μ ꡬ쑰체μμλ§ μ μ κ°λ₯ν κ² μλκ°μ..?π€
μΈμ€ν΄μ€ νλ‘νΌν°μ κ²½μ° μ μ₯ νλ‘νΌν°λ μ΄κ±°νμμ μ¬μ©μ΄ λΆκ°(ν΄λμ€, ꡬ쑰체μμλ§ κ°λ₯)νμ§λ§ μ μ₯ νμ νλ‘νΌν°λ μ΄κ±°νμμλ μ¬μ©μ΄ κ°λ₯ν©λλ€!
νμ νλ‘νΌν°μ μ κ·Όκ³Ό μ€μ
μΈμ€ν΄μ€ νλ‘νΌν°μ λ§μ°¬κ°μ§λ‘ νμ νλ‘νΌν°λ μ μ°μ°μ(dot operator)λ‘ νλ‘νΌν°μ κ°μ κ°μ Έμ€κ³ ν λΉν μ μμ΅λλ€.
print(SomeStructure.storedTypeProperty) // Print: Some value.
print(SomeEnumeration.computedTypeProperty) // Print: 6
print(SomeClass.storedTypeProperty) // Print: 1
SomeClass.computedTypeProperty = 2
print(SomeClass.storedTypeProperty) // Print: 2
μ΄λ κ² νμ νλ‘νΌν°κΉμ§ νλ‘νΌν°μ λν΄ μ μ 리ν΄λ³΄μλλ°μ!
κ·Έλμ νλ‘νΌν° μ μΈ, κ·Έλ¦¬κ³ μΈμ€ν΄μ€ μμ± λ° μ΄κΈ°νλ₯Ό μ λ§ λ§μ΄ νμκ³ UI μ λ°μ΄νΈλ₯Ό μν΄μ didSet λ©μλλ μ’ μ’ μ¬μ©νμμλλ° μ΄λ² κΈ°νμ κ°λ μ νμ€ν μ 리νκ³ , λ νλ‘νΌν°λ³ μ°¨μ΄μ μ λν΄ μ λλ‘ μ§κ³ λμ΄κ° μ μκ² λ κ² κ°μ΅λλ€ :)
κΈ΄ κΈ μ½μ΄μ£Όμ μ κ°μ¬ν©λλ€!!
[μ°Έκ³ μλ£]
'π iOS > Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] Optional (1) | 2023.11.22 |
---|---|
[Swift] μ λ ¬ λ©μλ μ 볡νκΈ° (sort(), sorted()) (0) | 2023.10.23 |
[Swift] νλ‘νΌν°(Properties) - νλ‘νΌν° μ΅μ λ² (0) | 2023.04.02 |
[Swift] νλ‘νΌν°(Properties) - μ μ₯ νλ‘νΌν°, μ°μ° νλ‘νΌν° (2) | 2023.04.01 |
[Swift] lazy ν€μλ (0) | 2023.03.18 |