iOS/Swift

Swift 접근 제어 요약

태애니 2025. 5. 2. 21:14
728x90

1. 접근 제어란?

  • 다른 소스 파일이나 모듈에서 코드에 접근할 수 있는지 여부를 제한.
  • 구현 세부사항 은닉  공용 인터페이스 정의 목적.
  • 클래스, 구조체, 열거형, 프로퍼티, 메서드, 초기화, 서브스크립트, 프로토콜, 전역 함수 등에 적용 가능.

2. 핵심 개념

개념설명
모듈 독립적인 빌드/배포 단위 (예: 앱, 프레임워크)
소스 파일 모듈 내의 개별 .swift 파일
패키지 여러 모듈을 묶은 집합 (SwiftPM 기준)

3. 접근 수준 5단계

수준설명
open 가장 개방적. 다른 모듈에서도 상속, 재정의 가능 (클래스/멤버만 사용 가능)
public 다른 모듈에서 접근은 가능, 상속/재정의는 불가
internal 기본값. 같은 모듈 내에서만 사용 가능
fileprivate 같은 소스 파일 내에서만 접근 가능
private 같은 선언 블록 및 확장에서만 접근 가능

4. 기본 원칙

  • 더 제한적인 타입을 사용해서 더 넓은 접근 수준을 가진 변수나 함수는 정의할 수 없음. 예) public var a: PrivateType X

 

open class SomeOpenClass {}
public class SomePublicClass {}
internal class SomeInternalClass {}    // 또는 생략 가능
fileprivate class SomeFilePrivateClass {}
private class SomePrivateClass {}

fileprivate func someFunc() {}
private var someVar: Int = 0

 

 

 

  • 단일 앱: internal 기본값으로 충분. 구현 세부는 private 또는 fileprivate로 숨김.
  • 프레임워크: 외부에 노출할 인터페이스는 public 또는 open으로 설정.
  • 유닛 테스트: @testable import 사용 시 internal도 테스트에서 접근 가능.

 

 

공부하려고 정리해두기

 

728x90