iOS π/Swift
μ κ·Όμ μ΄, Access control
yongmin.Lee
2021. 12. 28. 18:48
Access Control, μ κ·Ό μ μ΄
- λ€λ₯Έ μμ€νμΌ λ° λͺ¨λμ μ½λμμ, μ½λμ μΌλΆμ λν μ‘μΈμ€(μ κ·Ό)μ μ ν
- Swift μ κ·Ό μ μ΄ λͺ¨λΈμ λͺ¨λ λ° μμ€νμΌμ κ°λ μ κΈ°λ°μΌλ‘ νλ€.
- μ κ·Όμ μ΄λ₯Ό ν΅ν΄ κ°μ²΄ μΈλΆμμ κ°μ²΄λ΄μ μλ£λ‘μ μ κ·Όμ μ ννκ³ λ°μ΄ν°λ₯Ό μμ ,μ‘°μνλ λμμ λ΄λΆμ λκ³ μ κ·Ό(getter),μ€μ (setter)νλ λ©μλλ‘ κ²°κ³Όλ§ λ°λλ‘ νλ κ°μ²΄μ μλνλ₯Ό κ°λ₯νκ² ν΄μ€λ€
- λͺ¨λ
- μ½λ λ°°ν¬(code distribution)μ λ¨μΌ μ λ
- Xcodeμ κ° λΉλ λμ ( μ : μ± λ²λ€ λλ Framework )μ Swiftμμ λ³λμ λͺ¨λλ‘ μ²λ¦¬
- μμ€νμΌ
- λͺ¨λ λ΄μ λ¨μΌ Swiftμμ€ μ½λ νμΌ (μ¬μ€μ μ± λλ Frameworkλ΄μ λ¨μΌ νμΌ)
- λͺ¨λ λ΄μ λ¨μΌ Swiftμμ€ μ½λ νμΌ (μ¬μ€μ μ± λλ Frameworkλ΄μ λ¨μΌ νμΌ)
Access Levels, μ κ·Ό λ 벨
- open(κ°μ₯ μ ν μ μ) -> public -> internal -> fileprivate -> private(κ°μ₯ μ νμ )μΌλ‘ κ° μλ‘ λ μ νμ
- open
- open μ κ·Όμ ν΄λμ€ λ° ν΄λμ€ λ©€λ²μλ§ μ μ©
- μν°ν°λ₯Ό μ μ λͺ¨λμ λͺ¨λ μμ€ νμΌ λ΄μμ μ¬μ©ν μ μμΌλ©°, μ μν λͺ¨λμ κ°μ Έμ€λ λ€λ₯Έ μΈλΆ λͺ¨λμ μμ€νμΌμμλ μ¬μ©ν μ μλ€.
- μ μ λ λͺ¨λ λ΄λΆ λ° λͺ¨λμ κ°μ Έμ€λ μΈλΆ λͺ¨λμμ μλΈ ν΄λμ± λλ override λ μ μλ€.
- public
- κ°λ³ νμ (individual types)(ν΄λμ€, ꡬ쑰체 λ° μ΄κ±°) λΏλ§μλλΌ, ν΄λΉ νμ μ μνλ νλ‘νΌν°, λ©μλ, μ΄λμ λΌμ΄μ λ° μ²¨μ(subscripts)μ λν΄ νΉμ μ κ·Ό λ 벨μ μ§μ νλλ° μ μ©λλ€
- μν°ν°λ₯Ό μ μ λͺ¨λμ λͺ¨λ μμ€ νμΌ λ΄μμ μ¬μ©ν μ μμΌλ©°, μ μν λͺ¨λμ κ°μ Έμ€λ λ€λ₯Έ μΈλΆ λͺ¨λμ μμ€νμΌμμλ μ¬μ©ν μ μλ€.
- μ μ λ λͺ¨λ λ΄λΆμμλ§ μλΈ ν΄λμ± λλ override λ μ μλ€.
- internal
- κ°λ³ νμ (individual types)(ν΄λμ€, ꡬ쑰체 λ° μ΄κ±°) λΏλ§μλλΌ, ν΄λΉ νμ μ μνλ νλ‘νΌν°, λ©μλ, μ΄λμ λΌμ΄μ λ° μ²¨μ(subscripts)μ λν΄ νΉμ μ κ·Ό λ 벨μ μ§μ νλλ° μ μ©λλ€
- μ μ λͺ¨λμ λͺ¨λ μμ€ νμΌ λ΄μμ μ¬μ©λμ§λ§, ν΄λΉ λͺ¨λ μΈλΆμ μμ€νμΌμμλ μ¬μ©λμ§ μλλ‘ νλ€
- κ°μ μ μ λͺ¨λμ΄λ©΄ λ€λ₯Έ μμ€νμΌμ΄μ΄λ μ κ·Όμ΄ κ°λ₯
- κ°μ μ μ λͺ¨λ λ΄λΆμμλ μλΈ ν΄λμ± λλ override λ μ μλ€.
- fileprivate
- κ°λ³ νμ (individual types)(ν΄λμ€, ꡬ쑰체 λ° μ΄κ±°) λΏλ§μλλΌ, ν΄λΉ νμ μ μνλ νλ‘νΌν°, λ©μλ, μ΄λμ λΌμ΄μ λ° μ²¨μ(subscripts)μ λν΄ νΉμ μ κ·Ό λ 벨μ μ§μ νλλ° μ μ©λλ€
- κ°μ λͺ¨λ λ΄μμλ κ°μ μ μ μμ€νμΌ μμμλ§ μ¬μ©μ΄ κ°λ₯
- κ°μ μ μ λͺ¨λμ΄λ©΄μ κ°μ μμ€νμΌμμλ μλΈ ν΄λμ± λλ override λ μ μλ€.
- private
- κ°λ³ νμ (individual types)(ν΄λμ€, ꡬ쑰체 λ° μ΄κ±°) λΏλ§μλλΌ, ν΄λΉ νμ μ μνλ νλ‘νΌν°, λ©μλ, μ΄λμ λΌμ΄μ λ° μ²¨μ(subscripts)μ λν΄ νΉμ μ κ·Ό λ 벨μ μ§μ νλλ° μ μ©λλ€
- enclosing declaration μΌλ‘ μ ν
- swift4 μΆκ°μ¬ν : λμΌν νμΌμ μλ ν΄λΉ μ μΈμ extensionμΌλ‘ μ ν
μ°Έκ³