Nice programing

Swift에서 가져 오기 가능한 모듈을 어떻게 생성합니까?

nicepro 2020. 10. 30. 21:01
반응형

Swift에서 가져 오기 가능한 모듈을 어떻게 생성합니까?


저는 Swift에 대한 Apple의 문서를 읽었으며 모듈을 만드는 방법이나 클래스 또는 스터 처 멤버를 비공개 또는 공개로 정의하는 방법에 대해 아무것도 찾을 수 없습니다.

구문에 import 문에 대한 참조가 있지만 그것이 수행하는 작업이나 사용 방법에 대한 정보를 찾을 수 없습니다.

이걸 어디서 찾을 수 있는지 아는 사람 있나요?


최신 정보

프레임 워크를 사용하여 신속한 프로젝트를 모듈화 할 수 있습니다.

각 모듈에 대해 별도의 프레임 워크 프로젝트를 생성하여 모듈화하고 Xcode 작업 공간을 통해 연결합니다. 구성 요소를 서로 다른 프로젝트로 분리 할 때 더 자연스러워 보이고 모듈간에 단방향 통신 만 있는지 확인합니다. 개발자는 다른 모듈에 대해 많이 생각하지 않고 격리 작업 / 테스트를 수행 할 수 있습니다.

기본적으로 프레임 워크 내에서 생성 된 클래스 / 구조체 / 등은 internal액세스 제어 유형을 가지므로 모듈 내에서만 볼 수 있습니다. 모듈 외부에서 볼 수 있도록 만들 수 있습니다 public.

여기 에 액세스 제어 수준에 대한 자세한 정보


최신 Xcode 6 베타 업데이트 (베타 4)는 신속한 액세스 제어를 제공합니다.

Swift로 액세스 제어 가능

Swift 액세스 제어에는 세 가지 액세스 수준이 있습니다.

  • 개인 엔티티는 정의 된 소스 파일 내에서만 액세스 할 수 있습니다.
  • 내부 엔티티는 정의 된 대상 내 어디에서나 액세스 할 수 있습니다.!
  • 공용 엔터티는 대상 내의 어디에서나 현재 대상의 모듈을 가져 오는 다른 컨텍스트에서 액세스 할 수 있습니다.

Swift에서 "Modules"는 프레임 워크를 의미합니다. Xcode에는 이제 iOS 및 OS X 용 프레임 워크 프로젝트를 만들기위한 템플릿이 있습니다.

현재는 메서드 나 속성을 public / protected로 선언 할 수있는 방법이 없습니다. 이 기능이 추가되었는지 확인하려면 Apple의 버그 리포터 에서 기능 요청을 할 수 있습니다 . 또한 Apple은 Xcode의 각 릴리스에 따라 언어가 변경 될 수 있으므로 공개 릴리스 전에 멤버 액세스 수준을 추가 할 수 있다고 언급했습니다.


또한 혼자서 모듈을 만드는 방법도 있지만 좀 더 어려운 방법입니다.

살펴보면 xcrun swift -help몇 가지 옵션을 볼 수 있으며 -emit-module, -emit-library-emit-object유용 할 수 있지만 아마도 공식적인 방법을 선호하고 프레임 워크를 통해 모듈을 배포해야합니다.

그래도 스스로 모듈을 만들고 싶다면 이 가이드 를 몇 가지 설명과 함께 읽을 수 있습니다.


애플은 사적인 방법이 아직 존재하지 않지만 구현 중이라고 언급했습니다. 이것은 새로운 언어이며 여전히 구축되고 있음을 기억하십시오.


스위프트 4.0

Apple 책 " The Swift Programming Language (Swift 4 Edition) "의 "접근 제어"장에서 설명

Swift는 코드 내의 엔터티에 대해 5 가지 액세스 수준을 제공합니다. 이러한 액세스 수준은 엔티티가 정의 된 소스 파일과 관련되며 소스 파일이 속한 모듈과 관련됩니다.

  • open액세스 및 public액세스를 사용하면 정의 모듈의 소스 파일과 정의 모듈을 가져 오는 다른 모듈의 소스 파일에서 엔티티를 사용할 수 있습니다. 일반적으로 프레임 워크에 대한 공용 인터페이스를 지정할 때 개방 또는 공용 액세스를 사용합니다. 정의 모듈을 가져 오는 다른 모듈과 열기의 차이점입니다. 일반적으로 프레임 워크에 대한 공용 인터페이스를 지정할 때 개방 또는 공용 액세스를 사용합니다.
  • internal액세스를 사용하면 정의 모듈의 모든 소스 파일 내에서 엔티티를 사용할 수 있지만 해당 모듈 외부의 소스 파일에서는 사용할 수 없습니다. 일반적으로 앱 또는 프레임 워크의 내부 구조를 정의 할 때 내부 액세스를 사용합니다.
  • fileprivate액세스는 엔티티의 사용을 자체 정의 소스 파일로 제한합니다. 파일 전용 액세스를 사용하여 특정 기능에 대한 구현 세부 정보를 전체 파일 내에서 사용하는 경우이를 숨 깁니다.
  • privateaccess는 엔터티의 사용을 둘러싸는 선언과 동일한 파일에있는 해당 선언의 확장으로 제한합니다. 이러한 세부 사항이 단일 선언 내에서만 사용되는 경우 특정 기능의 구현 세부 사항을 숨기려면 비공개 액세스를 사용하십시오. "

참고 URL : https://stackoverflow.com/questions/24027125/how-do-i-create-an-importable-module-in-swift

반응형