Bibi's DevLog π€π
[Apple Developer Docs] Choosing Between Structures and Classes (ꡬ쑰체μ ν΄λμ€ μ¬μ΄μμ μ ννκΈ°) λ³Έλ¬Έ
[Apple Developer Docs] Choosing Between Structures and Classes (ꡬ쑰체μ ν΄λμ€ μ¬μ΄μμ μ ννκΈ°)
λΉλΉ bibi 2023. 1. 31. 15:35μλ³Έ λ¬Έμ : Apple Developer Documentation
ꡬ쑰체μ ν΄λμ€ μ¬μ΄μμ μ ννκΈ°
λ°μ΄ν°μ λͺ¨λΈ νλμ μ΄λ»κ² μ μ₯ν μ§ κ²°μ ν©λλ€.
κ°μ
ꡬ쑰체μ ν΄λμ€λ λΉμ μ μ±μμ λ°μ΄ν°λ₯Ό μ μ₯νκΈ° μν, κ·Έλ¦¬κ³ νλλ€μ λͺ¨λΈλ§νκΈ° μν μ’μ μ νμ λλ€. νμ§λ§ μ΄λ€μ μ μ¬μ±μ΄ λ μ€ νλλ₯Ό μ ννλ κ²μ μ΄λ ΅κ² λ§λ€ μ μμ΅λλ€.
λΉμ μ μ±μ μλ‘μ΄ λ°μ΄ν° νμ μ μΆκ°ν λ, μ΄λ€ μ νμ΄ ν©λ¦¬μ μΈμ§ μ ννλλ‘ λμμ£Όλ μλμ κΆμ₯μ¬νμ λ°λ₯΄λ κ²μ κ³ λ €ν΄ λ³΄μμμ€.
- κΈ°λ³Έμ μΌλ‘ ꡬ쑰체λ₯Ό μ¬μ©ν©λλ€.
- Objective-C μνΈμ΄μ©μ±μ΄ νμν κ²½μ°, ν΄λμ€λ₯Ό μ¬μ©ν©λλ€.
- λΉμ μ΄ λͺ¨λΈλ§νκ³ μλ λ°μ΄ν°μ λμΌμ±μ κ΄λ¦¬ν νμκ° μλ€λ©΄, ν΄λμ€λ₯Ό μ¬μ©ν©λλ€.
- ꡬνμ¬νλ€μ 곡μ ν¨μΌλ‘μ νλμ μ±ννκΈ° μν΄, ꡬ쑰체μ νλ‘ν μ½μ ν¨κ» μ¬μ©ν©λλ€.
κΈ°λ³Έμ μΌλ‘ ꡬ쑰체λ₯Ό μ ννκΈ°
μΌλ°μ μΈ μ’ λ₯μ λ°μ΄ν°λ₯Ό λνλ΄κΈ° μν΄ κ΅¬μ‘°μ²΄λ₯Ό μ¬μ©νμμμ€. Swiftμ ꡬ쑰체λ λ€λ₯Έ μΈμ΄λ€μμλ ν΄λμ€μλ§ μ νλλ λ§μ κΈ°λ₯λ€μ ν¬ν¨ν©λλ€: μ μ₯ νλ‘νΌν°, μ°μ° νλ‘νΌν°, λ©μλλ₯Ό ν¬ν¨ν μ μμ΅λλ€. κ²λ€κ°, Swiftμ ꡬ쑰체λ νλ‘ν μ½μ μ±ννμ¬ κΈ°λ³Έ ꡬνλ€μ ν΅ν΄ νλμ μ»μ μ μμ΅λλ€. Swift νμ€ λΌμ΄λΈλ¬λ¦¬μ Foundationμ λΉμ μ΄ μμ£Ό μ¬μ©νλ μ«μ, λ¬Έμμ΄, λ°°μ΄, λμ λ리μ κ°μ νμ λ€μ λν΄ κ΅¬μ‘°μ²΄λ₯Ό μ¬μ©ν©λλ€.
ꡬ쑰체λ₯Ό μ¬μ©νλ κ²μ μ±μ μ 체 μνλ₯Ό κ³ λ €νμ§ μκ³ λ λΉμ μ μ½λ μΌλΆμ λν΄ μΆλ‘ νλ κ²μ λ μ½κ² ν΄ μ€λλ€. ꡬ쑰체λ κ° νμ μ΄κΈ° λλ¬Έμ - ν΄λμ€μλ λ€λ₯΄κ² - ν ꡬ쑰체μ λ³νλ λΉμ μ΄ μλμ μΌλ‘ κ·Έ λ³νλ₯Ό μ± νλ¦μ μΌλΆλ‘μ μ λ¬νμ§ μλ ν 보μ΄μ§ μμ΅λλ€. κ·Έ κ²°κ³Όλ‘, λΉμ μ μ΄λ€ μ½λ λΆλΆμ λ³΄κ³ , κ·Έ λΆλΆ μμ μΈμ€ν΄μ€μ λν λ³νκ° λ³λ‘ κ΄κ³κ° μλ ν¨μ νΈμΆλ‘λΆν° 보μ΄μ§ μκ² μΌμ΄λλ κ²μ΄ μλλΌ, λͺ μμ μΌλ‘ μΌμ΄λ κ²μμ νμ ν μ μμ΅λλ€.
Objective-C μνΈμ΄μ©μ±μ΄ νμν λ ν΄λμ€λ₯Ό μ¬μ©νκΈ°
λ§μ½ λΉμ μ΄ λΉμ μ λ°μ΄ν°λ₯Ό μ²λ¦¬νκΈ° μν΄ Objective-C APIλ₯Ό μ¬μ©νκ±°λ, Objective-C νλ μμν¬μ μ μλ μ‘΄μ¬νλ ν΄λμ€ κ³μΈ΅ ꡬ쑰 μμ λΉμ μ λ°μ΄ν° λͺ¨λΈμ λ§μΆ νμκ° μλ€λ©΄, λΉμ μ λ°μ΄ν°λ₯Ό λͺ¨λΈλ§νκΈ° μν΄ ν΄λμ€μ ν΄λμ€ μμμ μ¬μ©ν΄μΌ ν κ²μ λλ€. μλ₯Ό λ€μ΄, λ§μ Objective-C νλ μμν¬λ λΉμ μ΄ μλΈν΄λμ€λ‘ μμνλ κ²λ€μ ν΄λμ€λ‘ λ ΈμΆν©λλ€.
λμΌμ±μ κ΄λ¦¬ν νμκ° μμ λ ν΄λμ€λ₯Ό μ¬μ©νκΈ°
Swiftμ ν΄λμ€λ μ°Έμ‘° νμ
μ΄κΈ° λλ¬Έμ λμΌμ±μ λν λ΄μ₯λ κ°λ
μ΄ μμ΅λλ€. μ΄λ λ μλ‘ λ€λ₯Έ ν΄λμ€ μΈμ€ν΄μ€λ€μ΄ κ°κ°μ μ μ₯ νλ‘νΌν°λ‘ κ°μ κ°μ κ°μ§ λ, μ¬μ ν λμΌμ± μ°μ°μ(===
)μ μν΄ λ€λ₯΄λ€κ³ κ³ λ €λλ€λ κ²μ μλ―Έν©λλ€. μ΄λ λν λΉμ μ μ± λ΄μμ ν΄λμ€ μΈμ€ν΄μ€λ₯Ό 곡μ ν λ, κ·Έ μΈμ€ν΄μ€μ λν΄ λΉμ μ΄ λ§λ λ³νλ₯Ό κ·Έ μΈμ€ν΄μ€μ λν μ°Έμ‘°λ₯Ό κ°μ§κ³ μλ λ€λ₯Έ λͺ¨λ μ½λ λΆλΆμμλ λ³Ό μ μμμ μλ―Έν©λλ€. λΉμ μ μΈμ€ν΄μ€κ° μ΄λ¬ν μ’
λ₯μ λμΌμ±μ κ°μ ΈμΌ ν νμκ° μμ λ ν΄λμ€λ₯Ό μ¬μ©νμμμ€. μΌλ°μ μΈ μ¬μ© μμλ νμΌ μ²λ¦¬, λ€νΈμν¬ μ°κ²°, κ·Έλ¦¬κ³ CBCentralManager
κ°μ 곡μ νλμ¨μ΄ μ€μ¬μμ
λλ€.
μλ₯Ό λ€μ΄, λ§μ½ λΉμ μ΄ λ‘컬 λ°μ΄ν°λ² μ΄μ€ μ°κ²°μ λνλ΄λ νμ μ κ°μ§κ³ μλ€λ©΄, κ·Έ λ°μ΄ν°λ² μ΄μ€μ λν μ κ·Όμ κ΄λ¦¬νλ μ½λλ λΉμ μ μ±μμ 보μ΄λ― λ°μ΄ν°λ² μ΄μ€μ μνμ λν μμ ν μ μ΄λ₯Ό νμλ‘ ν©λλ€. μ΄λ¬ν κ²½μ° ν΄λμ€λ₯Ό μ¬μ©νλ κ²μ΄ μ μ ν©λλ€. νμ§λ§ λΉμ μ μ±μ μ΄λ€ λΆλΆμ΄ 곡μ λ°μ΄ν°λ² μ΄μ€ κ°μ²΄μ λν μ κ·ΌκΆμ κ°μ§λμ§ μ ννλ κ²μ νμ€ν ν΄μΌ ν©λλ€.
μ€μ
λμΌμ±μ μ£Όμ κΉκ² λ€λ£¨μμμ€. ν΄λμ€ μΈμ€ν΄μ€λ₯Ό μ± μ 체μ κ±Έμ³ λ리 곡μ νλ©΄ λ‘μ§ μλ¬κ° λ°μνκΈ° μ½μ΅λλ€. λΉμ μ λ§€μ° λ리 곡μ λλ μΈμ€ν΄μ€μ λ³νμ λν κ²°κ³Όλ₯Ό μμΈ‘νκΈ° μ΄λ €μ°λ©°, λ°λΌμ κ·Έλ¬ν μ½λλ₯Ό μ¬λ°λ₯΄κ² μμ±νλ κ²μ΄ μΆκ°μ μΈ μΌμ΄ λ©λλ€.
λμΌμ±μ ν΅μ νμ§ μμ λ ꡬ쑰체λ₯Ό μ¬μ©νκΈ°
λΉμ μ΄ ν΅μ νμ§ μλ λμΌμ±μ κ°μ§ μν°ν°μ λν μ 보λ₯Ό λ΄μ λ°μ΄ν°λ₯Ό λͺ¨λΈλ§ν λλ ꡬ쑰체λ₯Ό μ¬μ©νμμμ€.
μλ₯Ό λ€μ΄ μ격 λ°μ΄ν°λ² μ΄μ€λ₯Ό μ°Έμ‘°νλ μ±μμλ, μΈμ€ν΄μ€μ λμΌμ±μ μΈλΆ μν°ν°μ μν΄ μμ ν μμ λκ³ μλ³μ(identifier)μ μν΄ μ λ¬λμ΄μΌ ν©λλ€. λ§μ½ μ±μ λͺ¨λΈμ μΌκ΄μ±μ΄ μλ²μ μ μ₯λμ΄ μλ€λ©΄, λΉμ μ μλ³μλ₯Ό κ°μ§ κ΅¬μ‘°μ²΄λ‘ κΈ°λ‘μ λͺ¨λΈλ§ν μ μμ΅λλ€. μλ μμμμ, jsonResponse
λ μλ²λ‘λΆν° μΈμ½λ©λ PenPalRecord
μΈμ€ν΄μ€λ₯Ό κ°μ§κ³ μμ΅λλ€:
PenPalRecord
μ κ°μ λͺ¨λΈ νμ
μ λν λ‘컬μ λ³νλ μ μ©ν©λλ€. μλ₯Ό λ€μ΄, μ±μ΄ μ μ νΌλλ°±μ μν μλ΅μΌλ‘ μ¬λ¬ λ€λ₯Έ ννμ μΆμ²ν μ μμ΅λλ€. PenPalRecord
ꡬ쑰체λ κΈ°μ μ λ°μ΄ν°λ² μ΄μ€ κΈ°λ‘μ λμΌμ±μ ν΅μ νμ§ μμΌλ―λ‘, λ‘컬μ PenPalRecord
μΈμ€ν΄μ€μ λν΄ μ΄λ£¨μ΄μ§ λ³νκ° μλμΉ μκ² λ°μ΄ν°λ² μ΄μ€μ κ°μ λ°κΎΈλ μν©μ λν μ΄λ€ μνλΆλ΄λ μμ΅λλ€.
λ§μ½ μ±μ λ€λ₯Έ λΆλΆμ΄ myNickname
μ λ°κΎΈκ³ , κ·Έ λ³κ²½ μμ²μ μλ²μ λ€μ μ μΆνλ€λ©΄, κ°μ₯ μ΅κ·Όμ κ±°μ λ νν μΆμ²μ΄ λ³κ²½μ μν΄ μ¬κ³ λ‘ μ νλμ§ μμ κ²μ
λλ€. myId
νλ‘νΌν°κ° μμλ‘ μ μΈλμ΄ μμΌλ―λ‘, λ‘컬μμλ λ³κ²½λ μ μμ΅λλ€. κ·Έ κ²°κ³Ό, λ°μ΄ν°λ² μ΄μ€μ λν μμ²μ λ€λ₯Έ κΈ°λ‘μ μλμΉ μκ² λ³νμν€μ§ μμ κ²μ
λλ€.
λͺ¨λΈ μμκ³Ό νλ 곡μ λ₯Ό μν΄ κ΅¬μ‘°μ²΄μ νλ‘ν μ½ μ¬μ©νκΈ°
ꡬ쑰체μ ν΄λμ€λ λͺ¨λ μμμ΄λΌλ ννλ₯Ό μ§μν©λλ€. ꡬ쑰체μ ν΄λμ€λ νλ‘ν μ½λ§μ μ±νν μ μμ΅λλ€; μ΄λ€μ ν΄λμ€λ₯Ό μμν μ μμ΅λλ€. νμ§λ§, λΉμ μ΄ ν΄λμ€ μμμ ν΅ν΄ νμ±ν μ μλ μ νμ μμ κ³μΈ΅λ€μ νλ‘ν μ½μμκ³Ό ꡬ쑰체λ₯Ό μ¬μ©ν΄λ λκ°μ΄ λͺ¨λΈλ§ν μ μμ΅λλ€.
λ§μ½ 맨 μ²μλΆν° μμ κ΄κ³λ₯Ό λ§λ€κ³ μλ€λ©΄, νλ‘ν μ½ μμμ μ νΈν©λλ€. νλ‘ν μ½μ μμμ ν΄λμ€, ꡬ쑰체, μ΄κ±°νμ΄ μ°Έμ¬νλλ‘ νμ©ν©λλ€. λ°λ©΄ ν΄λμ€ μμμ μ€μ§ λ€λ₯Έ ν΄λμ€μλ§ νΈνμ΄ κ°λ₯ν©λλ€. λΉμ μ΄ λ°μ΄ν°λ₯Ό μ΄λ»κ² λͺ¨λΈλ§ν μ§ μ ννλ μ€μ΄λΌλ©΄, λ¨Όμ νλ‘ν μ½ μμμ μ¬μ©ν΄ λ°μ΄ν° νμ μ κ³μΈ΅μ λ§λλ κ²μ μλνμμμ€. κ·Έλ° λ€μ λΉμ μ ꡬ쑰체μ κ·Έ νλ‘ν μ½λ€μ μ±νν©λλ€.
'π±π iOS > π Apple Developer Documentation' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Array] contains(_:) + μκ°λ³΅μ‘λ νꡬ (0) | 2023.01.26 |
---|---|
[Swift] Array λ°°μ΄ : λ€μ§κΈ° - reversed() / μ리λ°κΎΈκΈ° swapAt(_:_:) (0) | 2023.01.19 |
[iOS] UINavigationController - viewControllersμ pushViewController(_:animated:) (0) | 2022.12.12 |
[Swift] ArraySlice(SubSequence) - λ°°μ΄μ λΆλΆ μ°Έμ‘°νκΈ° (0) | 2022.12.06 |
[Swift] type(of:) (0) | 2022.09.28 |