web-dev-qa-db-ja.com

Swiftでインポート可能なモジュールを作成するにはどうすればよいですか?

SwiftのAppleのドキュメントを読みましたが、モジュールの作成方法や、クラスまたは構造メンバーをプライベートまたはパブリックとして定義する方法については何も見つかりません。

構文にはimportステートメントへの参照がありますが、それが何をするのか、どのように使用するのかについての情報は見つかりません。

誰が私がこれを見つけることができるか知っていますか?

71
sprinter

更新

フレームワークを使用してSwiftプロジェクトをモジュール化できます。

モジュールごとに個別のフレームワークプロジェクトを作成してモジュール化し、Xcodeワークスペースを介してリンクします。コンポーネントを異なるプロジェクトに分けるとより自然に見えます。また、モジュール間で一方向の通信のみが行われるようになります。開発者は、他のモジュールについてあまり考えることなく、分離の作業/テストを行うことができます。

デフォルトでは、フレームワーク内で作成されたクラス/構造/などは、internalアクセス制御タイプを持つため、モジュール内でのみ表示されます。モジュールの外部で見えるようにするには、publicにすることができます。

アクセス制御レベルの詳細 here


最新のXcode 6ベータアップデート(ベータ4)は、Swiftにアクセス制御をもたらします

Swiftはアクセス制御を有効にします

Swiftアクセス制御には3つのアクセスレベルがあります。

  • privateエンティティは、定義されているソースファイル内からのみアクセスできます。
  • internalエンティティは、定義されているターゲット内のどこからでもアクセスできます。
  • publicエンティティには、ターゲット内のどこからでも、現在のターゲットのモジュールをインポートする他のコンテキストからでもアクセスできます。
1
Clement Prem

Swiftでは、「モジュール」はフレームワークを指します。 Xcodeには、iOSとOS Xの両方のフレームワークプロジェクトを作成するためのテンプレートがあります。

現在、メソッドまたはプロパティをpublic/protectedとして宣言する方法はありません。これを機能として追加したい場合は、 Appleのバグレポーター で機能のリクエストを行うことができます。また、AppleはXcodeのリリースごとに言語が変わる可能性があると述べているため、公開リリースの前にメンバーのアクセスレベルを追加できる可能性があります。

25
Austin

また、自分でモジュールを作成する方法もありますが、少し難しい方法です。

xcrun Swift -helpいくつかのオプションが表示される場合があり、-emit-module-emit-libraryおよび-emit-objectこれは便利かもしれませんが、おそらく、公式な方法を好み、フレームワークを介してモジュールを配布する必要があります。

それでも自分でモジュールを作成したい場合は、 このガイド をいくつかの説明とともに読むことができます

8
AlexDenisov