Accesss Control(접근제어)
Accesss Control(접근제어)는 다른 소스파일 및 모듈의 코드에서, 코드의 일부에 대한 액세스(접근)을 제한합니다.
이 기능을 사용하면, 코드의 구현 세부사항을 숨기고, 해당 코드를 접근하고 사용할 수 있는 기본 인터페이스를 지정할 수 있습니다.
개별타입(individualtypes)(클래스, 구조체, 열거) 뿐만아니라 해당 타입에 속하는 프로퍼티, 메소드, 이니셜라이저 및 서브스크립트에 대해 특정접근 레벨을 지정할 수 있다.
프로토콜은 전역 상수, 변수 및 함수처럼 특정 컨텍스트로 제한 될 수 있다.
말 그대로 외부 객체에서 객채 내부의 자료의 접근을 컨트롤하는것
*open 접근은 Class에서만 사용 가능. struct와 eum은 public부터 사용 가능 *
Modules and Source Files
Swift의 접근 제어모델은 모듈 및 소스파일의 개념을 기반으로 한다.
모듈은 코드 배포의 단일 유닛이다.
Access Levels
5가지의 접근 레벨을 제공
1. open, public (모든 소스 파일에서 접근 할 때 ex: 유틸, 프레임워크 등등)
- 모든 소스 파일 내에서 사용할 수 있으며 정의한 모듈을 가져오는 다른 모듈의 소스파일에서도 사용이 가능하다.
-프레임워크에 공용 인터페이스 사용할 때 사용
2. internal (외부 모듈에서는 불가능!)
- 정의 모듈의 모든 소스 파일 내에서 사용되지만, 해당 모듈 외부의 소스 파일에서는 사용되지 않도록 한다.
-app이나 프레임워크의 내부 구조를 정의할 때 사용
- 모듈 내에서만 사용이 가능하다. 기본 접근 수준이 이것
3. File-private (잘안쓰는 것 같음)
- 자체 정의 소스 파일에 대한 엔티티 사용을 제한한다. 해당 세부 정보가 전체 파일 내에서 사용될 때 특정 기능의 구현 세부 정보를 숨길 수 있다.
- 정의 소스 파일 내에서만 사용이 가능하다.
- 같은 모듈 내에서도 같은 소스 파일 안에서만 사용이 가능!
4. private
- 단일 정의 내에서만 사용되는 특정 기능 조각의 구현 상세 내역을 숨길 수 있다.
open -> public-> internal -> file-private -> private 순으로 갈수록 제한적
private랑 fileprivate의 차이가 명확하게 글로서 이해가 안된다면
같은 파일내에서 다른 클래스를 만들고 그 안에 함수를 호출해보면
fileprivate는 호출이 가능!
private는 안됩니다!
'개발 > 개발' 카테고리의 다른 글
[Swift] - async/await 살펴보기 (1) | 2022.02.08 |
---|---|
Swift 5.1 새로운 문법 정리 (0) | 2022.01.31 |
[iOS] - Testable한 코드를 작성하기 (0) | 2021.12.19 |
Swift 모델에 파싱하기 (0) | 2021.12.03 |
[iOS] Push Notification Error - InActive State (0) | 2021.11.10 |