λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
iOS 🍎/Swift

μ ‘κ·Όμ œμ–΄, Access control

by yongmin.Lee 2021. 12. 28.

Access Control, μ ‘κ·Ό μ œμ–΄

  • λ‹€λ₯Έ μ†ŒμŠ€νŒŒμΌ 및 λͺ¨λ“ˆμ˜ μ½”λ“œμ—μ„œ, μ½”λ“œμ˜ 일뢀에 λŒ€ν•œ μ•‘μ„ΈμŠ€(μ ‘κ·Ό)을 μ œν•œ
  • Swift μ ‘κ·Ό μ œμ–΄ λͺ¨λΈμ€ λͺ¨λ“ˆ 및 μ†ŒμŠ€νŒŒμΌμ˜ κ°œλ…μ„ 기반으둜 ν•œλ‹€.
  • μ ‘κ·Όμ œμ–΄λ₯Ό 톡해  κ°μ²΄ μ™ΈλΆ€μ—μ„œ κ°μ²΄λ‚΄μ˜ 자료둜의 접근을 μ œν•œν•˜κ³  데이터λ₯Ό μˆ˜μ •,μ‘°μž‘ν•˜λŠ” λ™μž‘μ€ 내뢀에 두고 μ ‘κ·Ό(getter),μ„€μ •(setter)ν•˜λŠ” λ©”μ†Œλ“œλ‘œ 결과만 받도둝 ν•˜λŠ” 객체의 은닉화λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•΄μ€€λ‹€
  • λͺ¨λ“ˆ
    • μ½”λ“œ 배포(code distribution)의 단일 μœ λ‹›
    • Xcode의 각 λΉŒλ“œ λŒ€μƒ ( 예 : μ•± λ²ˆλ“€ λ˜λŠ” Framework )은 Swiftμ—μ„œ λ³„λ„μ˜ λͺ¨λ“ˆλ‘œ 처리
  • μ†ŒμŠ€νŒŒμΌ
    • λͺ¨λ“ˆ λ‚΄μ˜ 단일 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으둜 μ œν•œ

 

 

 

 

μ°Έκ³ 

https://zeddios.tistory.com/383

'iOS 🍎 > Swift' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

typealias, associatedtype  (0) 2022.04.15
Non-Escaping Closure 와 Escaping Closure  (0) 2021.12.28
Method Dispatch  (0) 2021.12.06
KVO, Key-Value Observing  (0) 2021.12.06
Swift - κ³ μ°¨ν•¨μˆ˜, Higher-order function  (0) 2021.02.10