본문 바로가기
iOS/Swift

[Swift] Access Control (접근제한)

by 최지철 2024. 5. 31.
728x90
반응형

Access Control

  • 다른 소스 파일 또는 모듈의 코드에서 코드 부분에 대한 엑세스를 제한
  • 코드의 구현 세부 정보를 숨기고 해당 코드에 엑세스하고 사용할 수 있는 기본 인터페이스를 지정 가능

모듈과 소스파일 구분

  • 모듈: 배포 단위
    • 프레임워크 또는 응용프래그램을 import로 다른 모듈로 가져올 수 있는 성격
  • 소스파일: 단순히 소스코드 파일이므로 소스 파일에서 여러 유형에 대한 access control 정의가 가능

Access level

open 모든 소스 파일에서 해당 level 접근 가능 + 모든 곳에서 서브클래싱 가능
public 모든 소스 파일에서 해당 level 접근 가능 + 같은 모듈 내에서만 서브클래싱 가능
internal (외부 모듈에서 코드 확인 불가) 같은 모듈 내에서만 접근 가능
fileprivate (외부 모듈에서 코드 확인도 불가) 같은 소스파일 내에서만 접근 가능
private (외부 모듈에서 코드 확인도 불가) 클래스 내부에서만 접근 가능

 

디폴트가 internal인 이유는?

  • 일반적으로 단일 대상으로 특정 앱을 만드는데, 이 앱의 접근은 앱 모듈 외부에서 사용하게 만들 필요가 없기 때문
  • 단, 외부에서 해당 모듈의 코드를 비공개하고 싶은 경우 fileprivate, private 둘 중 하나로 설정해야 가능
728x90
반응형

'iOS > Swift' 카테고리의 다른 글

[Swift] self?. vs guard let self = self  (0) 2024.07.03
[Swift] 의존성 주입 Dependency Injection  (0) 2024.06.11
[Swift] designated init 과 convenience init  (0) 2024.05.30
[Swift] inout 파라미터  (0) 2024.05.28
[Swift] Generics 제네릭  (0) 2023.12.13