[swift] 패키지에서의 접근 제어 설정 방법
패키지를 개발하면서 다른 모듈에서의 접근을 제어하고 싶은 경우가 있습니다. Swift에서는 접근 제어(Access Control) 를 통해 모듈과 모듈 내부의 타입, 속성, 메서드, 이니셜라이저, 함수 및 서브스크립트에 대한 공개 여부를 세밀하게 관리할 수 있습니다. 패키지를 보다 안전하게 유지하고자 하는 경우에는 접근 제어 설정이 필수적입니다.
기본 접근 제어 수준
Swift에서는 기본적으로 세 가지의 접근 제어 수준을 제공합니다.
- Open: 가장 높은 수준으로, 다른 모듈에서도 해당 요소에 대한 접근이 가능합니다.
- Public: 모든 모듈에서 해당 요소에 접근할 수 있지만, override나 subclassing은 허용되지 않습니다.
- Internal: 동일한 모듈 내에서의 접근만 허용하며, 다른 모듈에서는 접근할 수 없습니다.
패키지에서의 접근 제어 설정
Swift에서는 패키지 파일 내에서 각 요소의 접근 제어 수준을 직접 지정할 수 있습니다. 다음은 패키지 파일 내에서의 접근 제어 설정 예시입니다.
// MyPackage.swift
open class OpenClass {
open func openFunc() {}
}
public class PublicClass {
public func publicFunc() {}
}
internal class InternalClass {
internal func internalFunc() {}
}
위 코드에서는 OpenClass
, PublicClass
, InternalClass
라는 세 개의 클래스를 정의하고 각각의 접근 제어 수준을 설정하였습니다.
모듈 외부에서의 접근
다른 모듈에서 해당 패키지를 가져와 사용할 때, 각 요소의 접근 제어 수준에 따라 접근 가능 여부가 결정됩니다. 이를 통해 패키지의 요소들을 보다 안전하게 관리할 수 있으며, 모듈 사용자에게 명확한 인터페이스를 제공할 수 있습니다.
결론
Swift에서는 패키지를 구성하는 요소들에 대한 접근 제어 수준을 세밀하게 설정할 수 있습니다. 이를 통해 모듈 간의 의존성 관리와 보안 강화를 할 수 있으며, 안정적인 소프트웨어를 제공할 수 있습니다.