코드의 관리는 중요하다. 위계 질서를 가지고 구분하지 않으면 혼란을 초래한다. 접근 제어는 특히 SDK 작업을 하는 경우 인터페이스 역할을 하기 때문에 잘 알아두는 것이 좋다.

Module & Source file

  • 접근 제어는 module과 source file 단위로 이뤄짐
    • Module
      • code 배포의 단위
        • App, Framework, Library
    • Source file
      • 하나의 source file
  • 다른 module의 code를 참조하려 하면 import 해야함
  • 같은 module안에서는 다른 source file을 import할 필요 없음

Access Levels

  • 종류
    • Open
      • module 외부에서 접근 가능
      • class에서만 사용
      • 정의된 모듈 밖에서도 상속 가능
    • Public
      • module 외부에서 접근 가능
    • Internal
      • 같은 module 안에서 접근 가능
      • access modifier를 지정하지 않으면 default임
    • fileprivate
      • 같은 source file안에서 접근 가능
    • private
      • 기능 정의 내부 또는 동일 파일내 extension에서만 접근 가능
  • 알아둘 점
    • 별도 지정하지 않으면 default internal
    • Framework의 경우, 외부 제공 interface를 open/public으로 만들어야 함
    • Unit Test에서 @testable attribute 를 써주면 해당 framework의 internal에도 접근 가능
  • 주의할 점
    • 모든 entity와 그것이 사용하는 entity는 access level이 맞아야 함
      • public function은 parameter로 internal, private level 못 받음
      • public class의 super class가 internal이나 private일 수 없음
    • 어차피 컴파일러가 에러내 줌!
profile
목표와 계획, 그리고 실천의 힘을 믿습니다.

0개의 댓글