λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
3️⃣ Swift/Swift 정리

[Swift] ν”„λ‘œνΌν‹° κ°œλ… 정리 (3); νƒ€μž… ν”„λ‘œνΌν‹°

by seolhee2750 2021. 9. 22.

이제 ν”„λ‘œνΌν‹° λ§ˆμ§€λ§‰ μ’…λ₯˜μΈ νƒ€μž… ν”„λ‘œνΌν‹°μ— λŒ€ν•΄ 정리해보렀고 ν•œλ‹€.

μ–΄λ–»κ²Œ 보면 μ €μž₯ ν”„λ‘œνΌν‹°, μ—°μ‚° ν”„λ‘œνΌν‹°μ— ν¬ν•¨λ˜λŠ” λ‚΄μš©μœΌλ‘œ λ³Ό μˆ˜λ„ μžˆκ² λ‹€.

 

πŸ“Ž νƒ€μž… ν”„λ‘œνΌν‹° (Type Properties)

νƒ€μž… ν”„λ‘œνΌν‹°λŠ” μ•žμ„œ κ³΅λΆ€ν–ˆλ˜ μ €μž₯ ν”„λ‘œνΌν‹°, μ—°μ‚° ν”„λ‘œνΌν‹°μ— static만 뢙이면 끝!

 

μ§€κΈˆκΉŒμ§€ κ³΅λΆ€ν•œ ν”„λ‘œνΌν‹°λ“€μ€ νƒ€μž…μ„ μ •μ˜ν•˜κ³ , ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λ˜μ—ˆμ„ λ•Œ μ‚¬μš©μ΄ κ°€λŠ₯ν–ˆλ‹€.

그리고 μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ λ‹€λ₯Έ 값을 κ°€μ§ˆ 수 μžˆμ—ˆλ‹€. μΌμ’…μ˜ μ§€μ—­λ³€μˆ˜κ°™μ€ κ°œλ….πŸ’₯

 

ν•˜μ§€λ§Œ 이 νƒ€μž… ν”„λ‘œνΌν‹°λŠ” 각각의 μΈμŠ€ν„΄μŠ€κ°€ μ•„λ‹Œ νƒ€μž… μžμ²΄μ—! μ†ν•˜λŠ” ν”„λ‘œνΌν‹°μ΄λ‹€.

μΈμŠ€ν„΄μŠ€μ˜ 생성 여뢀와 관계 없이 νƒ€μž… ν”„λ‘œνΌν‹°μ˜ 값은 λ”± ν•˜λ‚˜λΏμ΄λ‹€.

그리고 κ·Έ ν•˜λ‚˜λΏμΈ 값은 κ·Έ νƒ€μž…μ˜ λͺ¨λ“  μΈμŠ€ν„΄μŠ€κ°€ κ³΅ν†΅μœΌλ‘œ μ‚¬μš©ν•˜λŠ” κ°’μ΄λ‚˜

λͺ¨λ“  μΈμŠ€ν„΄μŠ€μ—μ„œ 곡용으둜 μ‚¬μš©ν•  수 μžˆλŠ” λ³€μˆ˜λ₯Ό μ •μ˜ν•  λ•Œ μœ μš©ν•˜λ‹€. μΌμ’…μ˜ μ „μ—­λ³€μˆ˜κ°™μ€ κ°œλ…!!πŸ’₯

 

이제 μ €μž₯, μ—°μ‚° νƒ€μž… ν”„λ‘œνΌν‹° 각각에 λŒ€ν•˜μ—¬ μžμ„Ένžˆ μ•Œμ•„λ³΄μž.

 

πŸ“Œ μ €μž₯ νƒ€μž… ν”„λ‘œνΌν‹°

μ €μž₯ νƒ€μž… ν”„λ‘œνΌν‹°μ˜ 경우, μ€‘μš”ν•œ νŠΉμ§•μ΄ ν•˜λ‚˜ μžˆλ‹€.

무쑰건 지연 μ—°μ‚° λœλ‹€λŠ” 것,,!!

lazy ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμŒμ—λ„ λΆˆκ΅¬ν•˜κ³  μžλ™μœΌλ‘œ 지연 μ—°μ‚° μ²˜λ¦¬λœλ‹€.

πŸ‘‰ ν•˜μ§€λ§Œ 지연 μ €μž₯ ν”„λ‘œνΌν‹°μ™€λŠ” 닀름!

[#1] μ΄ˆκΉƒκ°’μ„ μ„€μ •ν•΄μ•Όν•˜λ©°,

[#2] λ³€μˆ˜μ™€ μƒμˆ˜ λͺ¨λ‘ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜κ³ ,

[#3] λ‹€μ€‘μŠ€λ ˆλ“œ ν™˜κ²½μ—μ„œλ„ 무쑰건 ν•œ 번만 μ΄ˆκΈ°ν™”λœλ‹€λŠ” 보μž₯을 λ°›κΈ° λ•Œλ¬Έμ΄λ‹€.

 

κ·Έ 이유λ₯Ό ν•˜λ‚˜μ”© μ‚΄νŽ΄λ³΄μž,,!!

 

[#1] μ΄ˆκΉƒκ°’을 μ„€μ •ν•΄μ•Ό ν•˜λŠ” 이유

Example 클래슀 μ•ˆμ— name μ΄λΌλŠ” μ €μž₯ νƒ€μž… ν”„λ‘œνΌν‹°λ₯Ό μ„ μ–Έν–ˆλ‹€.

μ˜†μ— 였λ₯˜κ°€ λœ¨λŠ”λ°, κ·Έ λ‚΄μš©μ΄ μ΄λ‹ˆμ…œλΌμ΄μ €λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ getterλ₯Ό μ‚¬μš©ν•˜λΌκ³  ν•œλ‹€.

κ·Έ 의미λ₯Ό 해석해보면, static으둜 선언할거라면 μ΄ˆκΉƒκ°’μ„ μ„€μ •ν•˜κ±°λ‚˜ μ—°μ‚° νƒ€μž… ν”„λ‘œνΌν‹°λ‘œ λ§Œλ“€λΌλŠ” 것,,!!

 

μœ„μ—μ„œ λ§ν–ˆλ“― μ €μž₯ νƒ€μž… ν”„λ‘œνΌν‹°λŠ” μ „μ—­ λ³€μˆ˜μ²˜λŸΌ μ‚¬μš©λ˜λ―€λ‘œ

μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œλ§ˆλ‹€ μ΄ˆκΈ°ν™”λ˜λŠ” λ‹€λ₯Έ ν”„λ‘œνΌν‹°λ“€κ³ΌλŠ” 닀름!

ν•œ 번 ν˜ΈμΆœλ˜μ–΄ λ©”λͺ¨λ¦¬μ— κ°€λ©΄ κ·Έ μ΄ν›„λ‘œλŠ” μΈμŠ€ν„΄μŠ€κ°€ μƒˆλ‘œ μ΄ˆκΈ°ν™”λ˜λ“  말든, 상관없닀.

ν”„λ‘œνΌν‹°κ°€ μƒˆλ‘œ μƒμ„±λ˜μ§€ μ•Šκ³  κ³΅μœ λ˜μ–΄ μ‚¬μš©λ˜λŠ” 것이닀.

λ”°λΌμ„œ 이 μ €μž₯ νƒ€μž… ν”„λ‘œνΌν‹°λŠ” μΈμŠ€ν„΄μŠ€μ˜ μ΄ˆκΈ°ν™”μ™€ 관련이 μ—†κ³ ,

λ‹Ήμ—°ν•˜κ²Œλ„ μΈμŠ€ν„΄μŠ€ μƒμ„±μ‹œ ν˜ΈμΆœλ˜λŠ” μ΄λ‹ˆμ…œλΌμ΄μ €λ˜ν•œ 관련이 μ—†λ‹€.❗️

 

πŸ‘‰ λ•Œλ¬Έμ— 처음 μ„ μ–Έ μ‹œ μ΄ˆκΉƒκ°’μ„ 지정해두지 μ•ŠμœΌλ©΄

후에 μ΄ˆκΉƒκ°’μ„ λ„£μ–΄ 쀄 방법이 μ—†λ‹€. λ”°λΌμ„œ μ΄ˆκΉƒκ°’μ΄ ν•„μˆ˜!

 

[#2] λ³€μˆ˜μ™€ μƒμˆ˜ λͺ¨λ‘λ‘œ μ •μ˜ κ°€λŠ₯ν•œ 이유

지연 μ €μž₯ ν”„λ‘œνΌν‹°μ—μ„œλŠ” 무쑰건 λ³€μˆ˜λ§Œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€κ³  κ³΅λΆ€ν–ˆλŠ”λ°,

μ—¬κΈ°μ„œλŠ” 지연 μ €μž₯μž„μ—λ„ λΆˆκ΅¬ν•˜κ³  μƒμˆ˜λ„ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.

 

νƒ€μž… ν”„λ‘œνΌν‹°κ°€ μ•„λ‹Œ λͺ¨λ“  ν”„λ‘œνΌν‹°λ“€μ˜ 경우!

μΈμŠ€ν„΄μŠ€κ°€ 생성될 λ•Œ μ΄λ‹ˆμ…œλΌμ΄μ €μ— μ˜ν•΄ λͺ¨λ“  ν”„λ‘œνΌν‹°κ°€ μ΄ˆκΈ°ν™”λ˜λŠ”λ°,

이 λ•Œ 지연 μ €μž₯ ν”„λ‘œνΌν‹°λŠ” 아직 ν˜ΈμΆœλ˜μ§€ μ•Šμ•˜μœΌλ―€λ‘œ '값이 μ—†μŒ'으둜 μ΄ˆκΈ°ν™”λœλ‹€.

κ·Έλ ‡κ²Œ λ˜μ—ˆμ„ λ•Œ 이 지연 μ €μž₯ ν”„λ‘œνΌν‹°κ°€ μƒμˆ˜λΌλ©΄ 좔후에 ν˜ΈμΆœν•˜μ—¬ μ›ν•˜λŠ” 값을 ν• λ‹Ήν•  수 μ—†κ²Œ λœλ‹€.πŸ’₯

μœ„μ˜ 이유둜 지연 μ €μž₯ ν”„λ‘œνΌν‹°λŠ” μƒμˆ˜λ₯Ό μ‚¬μš©ν•˜μ§€ λͺ»ν•œλ‹€.

 

ν•˜μ§€λ§Œ μ €μž₯ νƒ€μž… ν”„λ‘œνΌν‹°λŠ” μœ„μ—μ„œ λ§ν–ˆλ“― μΈμŠ€ν„΄μŠ€μ˜ 생성, μ΄λ‹ˆμ…œλΌμ΄μ €μ™€ 아무 관계가 μ—†λ‹€.

λ”°λΌμ„œ μƒμˆ˜λ‘œ μ •μ˜ν• μ§€λΌλ„ ν•΄λ‹Ή ν”„λ‘œνΌν‹°μ˜ 호좜이 있기 μ „κΉŒμ§€λŠ”

ν”„λ‘œνΌν‹°κ°€ ν¬ν•¨λœ μΈμŠ€ν„΄μŠ€κ°€ μ΄ˆκΈ°ν™”λ˜λ“  말든,,! μ „ν˜€ 상관 없이 μ΄ˆκΈ°ν™”λ˜μ§€ μ•ŠλŠ”λ‹€.

πŸ‘‰ λ•Œλ¬Έμ— μ €μž₯ νƒ€μž… ν”„λ‘œνΌν‹°λŠ” μƒμˆ˜λ‘œ μ •μ˜ν•΄λ„ λ‚΄κ°€ 원할 λ•Œ ν˜ΈμΆœν•˜κ³  μ›ν•˜λŠ” 값을 ν• λ‹Ήν•  수 μžˆλŠ” 것❗️

 

[#3] 닀쀑 μŠ€λ ˆλ“œ ν™˜κ²½μ—μ„œλ„ ν•œ 번만 μ΄ˆκΈ°ν™”λœλ‹€λŠ” 보μž₯을 받을 수 μžˆλŠ” 이유

μœ„μ˜ 두 가지λ₯Ό λͺ¨λ‘ μ΄ν•΄ν–ˆλ‹€λ©΄, 이 κ°œλ…λ˜ν•œ μ‰½κ²Œ μ•Œ 수 μžˆμ„ 것이닀.

지연 μ €μž₯ ν”„λ‘œνΌν‹°λŠ” κ·Έλƒ₯ μ§€μ—°λ§Œ 될 뿐, 지역 λ³€μˆ˜μ™€ 같은 역할을 ν•œλ‹€λŠ” 점은 λ‹€λ₯΄μ§€ μ•Šλ‹€.

 

ν•˜μ§€λ§Œ μ €μž₯ νƒ€μž… ν”„λ‘œνΌν‹°λŠ” μ „μ—­ λ³€μˆ˜μ™€ 같은 역할을 ν•˜λ―€λ‘œ

λ”± ν•œ 번 μ΄ˆκΈ°ν™”λ˜κ³  λ©”λͺ¨λ¦¬μ— μ˜¬λΌκ°€λ©΄ 더 이상 μƒˆλ‘œμš΄ 호좜이 μžˆμ„ 수 μ—†λ‹€.

πŸ‘‰ λ”°λΌμ„œ 닀쀑 μŠ€λ ˆλ“œ ν™˜κ²½μΌμ§€λΌλ„ 두 번 이상 μ΄ˆκΈ°ν™”λ  수 μ—†λ‹€.❗️

 

μ΄λ ‡κ²Œ μ €μž₯ νƒ€μž… ν”„λ‘œνΌν‹°μ™€ 지연 μ €μž₯ ν”„λ‘œνΌν‹°μ™€μ˜ 차이점을 μ•Œμ•„λ΄€λ‹€.

이제 μ €μž₯ νƒ€μž… ν”„λ‘œνΌν‹°μ˜ 기본적인 μ‚¬μš© ν˜•νƒœλ₯Ό μ½”λ“œλ‘œ ν™•μΈν•΄λ³΄μž.!

class seolhee_Info {
    static let name: String = "섀희"
    static var age: Int = 1
}

// μΈμŠ€ν„΄μŠ€μ— μ ‘κ·Όν•  ν•„μš” 없이 νƒ€μž… μ΄λ¦„λ§ŒμœΌλ‘œ ν”„λ‘œνΌν‹° μ‚¬μš© κ°€λŠ₯
seolhee_Info.age = 2 // var둜 μ„ μ–Έλœ 경우 κ°’ 변경도 κ°€λŠ₯
print(seolhee_Info.name) // 섀희
print(seolhee_Info.age) // 2

μœ„μ—μ„œ μ„€λͺ…ν–ˆλ“― μ €μž₯ νƒ€μž… ν”„λ‘œνΌν‹°λŠ” μΈμŠ€ν„΄μŠ€μ˜ μ΄ˆκΈ°ν™”μ™€λŠ” 관련이 μ—†μœΌλ―€λ‘œ

μΈμŠ€ν„΄μŠ€μ— μ ‘κ·Όν•˜μ§€ μ•Šκ³ μ„œλ„ λ°”λ‘œ νƒ€μž… μ΄λ¦„μœΌλ‘œ ν”„λ‘œνΌν‹°μ˜ 호좜이 κ°€λŠ₯ν•˜λ‹€.

 

πŸ“Œ μ—°μ‚° νƒ€μž… ν”„λ‘œνΌν‹°

μ—°μ‚° νƒ€μž… ν”„λ‘œνΌν‹°λŠ” μ „μ—­ λ³€μˆ˜μ™€ 같은 역할을 ν•œ λ‹€λŠ” κ²ƒλ§Œ μ œμ™Έν•˜λ©΄

μ—°μ‚° ν”„λ‘œνΌν‹°μ™€ 큰 차이점이 μ—†λ‹€.

 

μ €μž₯ νƒ€μž… ν”„λ‘œνΌν‹°μ²˜λŸΌ μΈμŠ€ν„΄μŠ€μ— μ ‘κ·Όν•˜μ§€ μ•Šκ³  νƒ€μž… μ΄λ¦„λ§ŒμœΌλ‘œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€λŠ” 점,

그리고 μ—°μ‚° νƒ€μž… ν”„λ‘œνΌν‹°μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ 값을 μ €μž₯ν•˜λŠ”κ²Œ μ•„λ‹ˆλ―€λ‘œ

var둜만 μ •μ˜κ°€ κ°€λŠ₯ν•˜λ‹€λŠ” 점만 μΈμ§€ν•˜κ³  있으면 μΆ©λΆ„ν•˜λ‹€.

 

μ½”λ“œλ‘œ μ—°μ‚° νƒ€μž… ν”„λ‘œνΌν‹°μ˜ κΈ°λ³Έ ν˜•νƒœλ₯Ό μž‘μ„±ν–ˆλ‹€.

class seolhee_Info2 {
    static var introduce: String {
        return "섀희"
    }
}

print(seolhee_Info2.introduce) // 섀희

κΈ°λ³Έ μ—°μ‚° νƒ€μž… ν”„λ‘œνΌν‹°μ™€ λ™μΌν•œ ν˜•νƒœμ—, static만 μΆ”κ°€ν•œ λͺ¨μŠ΅μ΄λ‹€.


🌟 정리

νƒ€μž… ν”„λ‘œνΌν‹°λŠ” 일반적인 ν”„λ‘œνΌν‹°μ— static을 뢙인 ν˜•νƒœλ‘œ

μΈμŠ€ν„΄μŠ€μ˜ 생성과 관계 없이 νƒ€μž… μžμ²΄μ— μ†ν•˜λ©°, μ „μ—­ λ³€μˆ˜μ™€ λΉ„μŠ·ν•˜λ‹€.

ν˜ΈμΆœμ€ μΈμŠ€ν„΄μŠ€μ˜ μ ‘κ·Ό 없이 νƒ€μž… 자체 μ΄λ¦„λ§ŒμœΌλ‘œλ„ κ°€λŠ₯ν•˜λ‹€.

μ €μž₯ νƒ€μž… ν”„λ‘œνΌν‹°λŠ” μžλ™μœΌλ‘œ 지연 μ—°μ‚°λ˜κ³ , λ³€μˆ˜ μƒμˆ˜ λͺ¨λ‘λ‘œ μ •μ˜ κ°€λŠ₯, μ΄ˆκΉƒκ°’μ΄ ν•„μˆ˜μ΄λ©°

닀쀑 μŠ€λ ˆλ“œ ν™˜κ²½μ—μ„œλ„ ν•œ 번만 μ΄ˆκΈ°ν™”λœλ‹€λŠ” 것이 보μž₯λœλ‹€.

μ—°μ‚° νƒ€μž… ν”„λ‘œνΌν‹°λŠ” λ³€μˆ˜λ‘œλ§Œ μ •μ˜κ°€ κ°€λŠ₯ν•˜λ‹€.

 

글이 κΈΈμ–΄μ§ˆ 것 κ°™μ•„μ„œ μ €μž₯ ν”„λ‘œνΌν‹°, μ—°μ‚° ν”„λ‘œνΌν‹°, νƒ€μž… ν”„λ‘œνΌν‹° μ„Έ 개둜 λ‚˜λˆ  μž‘μ„±ν–ˆλŠ”λ°

μ΄λ ‡κ²Œ μ •λ¦¬ν•˜κ³  λ‚˜λ‹ˆ λ‚΄ 머릿속에도 κΉ”λ”νžˆ μš”μ•½λœ λŠλ‚Œμ΄λΌ μ’‹λ‹€,,

ν•˜μ§€λ§Œ λ‚΄μš©μ΄ 생각보닀 λ°©λŒ€ν•΄μ„œ ν”„λ‘œνΌν‹° κ°μ‹œμž, self ν”„λ‘œνΌν‹°,,, 그리고 그와 κ΄€λ ¨λœ

λ©”μ„œλ“œ, μΈμŠ€ν„΄μŠ€ 등등에 λŒ€ν•΄μ„œλŠ” λͺ¨λ‘ κ³΅λΆ€ν•˜μ§€ λͺ»ν–ˆλ‹€γ…œγ…œ μ‘°λ§Œκ°„ κ³΅λΆ€ν•΄μ„œ 또 글을 μž‘μ„±ν•΄μ•Όκ² λ‹€,,

ν™”μ΄νŒ…,!!πŸ™†πŸΌ‍♀️

 


μ°Έκ³ 

  • πŸ“– μŠ€μœ„ν”„νŠΈ ν”„λ‘œκ·Έλž˜λ°

λŒ“κΈ€