Access Control - The Swift Programming Language (Swift 5.6)

접근 제어는 다른 소스 파일과 모듈에 코드로부터 코드의 일부에 접근을 제한한다. 코드의 상세 구현을 숨기며, 코드가 접근하고 사용하도록 바람직한 인터페이스를 지정한다.

지정한 접근 수준을 개별적인 타입(클래스, 구조체, 열거형)에 할당 할 수 있으며, 뿐만 아니라 이들 타입이 속한 속성, 메소드, 이니셜라이저 그리고 서브스크립트도 포함한다. 프로토콜은 전역 상수, 변수 그리고 함수 같은 특정 컨텍스트로 제한될 수 있다.

접근 제어의 다양한 수준을 제공할 뿐만 아니라, Swift는 전형적인 시나리오에서 기본 접근 수준 제공을 제공함으로써 명시적인 접근 제어 수준을 지정하는 필요를 줄인다. 사실 단일 타겟 앱을 만든다면 명시적인 접근 제어 수준을 지정할 필요가 없을 수도 있다.

간략하게 다양한 방면에서 속성, 타입, 함수 등이 시나리오에서 실체를 참조하도록 접근 제어를 접근할 수 있다.


모듈과 소스 파일(Modules and Source Files)

Swifㅇt의 접근 제어 모델은 모듈과 소스파일의 개념이 기반이다.

모듈은 코드 배포의 하나의 단위이다. - 프레임워크나 어플리케이션은 하나의 실체로서 만들고 적재하며 Swift의 import 키워드와 같이 다른 모듈을 가져올 수 있다.

Xcode에서 각각의 빌드 타겟은 Swift에 나뉜 모듈로서 다뤄진다. 만약 독립 프레임워크로서 앱 코드의 형태를 같이 묶는다면, - 아마 여러 앱에 코드를 캡슐화하고 재사용을 하기 위해 - 앱에서 가져오고 사용될 때 또는 다른 프페임워크 안에서 사용될 때 프레임워크는 분리한 모듈의 부분으로서 정의한다.

소스 파일은 모듈 내에 하나의 Swift 소스 코드 파일이다(사실상 앱이나 프레임워크 내에서 단일 파일). 별도의 소스 파일에 개개의 타입을 정의하는 것이 일반적이지만, 하나의 소스 파일은 여러 타입, 함수 등을 위한 정의를 포함할 수 있다.


접근 수준(Access Levels)

Swift는 코드 내에서 실체를 위한 세 가지 다른 접근 수준을 제공한다. 이들 접근 수준은 실체가 정의 되는 것에 소스 파일이 관련있고, 소스 파일 속에 모듈에도 관련있다.