web-dev-qa-db-ja.com

Swiftコード実行のエントリポイントは何ですか?

Swiftにはmain()メソッドはありません。プログラムはどこかから実行を開始する必要があります。では、Swiftコード実行のエントリポイントは何であり、どのように決定されるのでしょうか。

93
Selvin

プレーンSwiftモジュールのエントリポイントは、main.Swiftというモジュール内のファイルです。 main.Swiftは、トップレベルで式とステートメントを使用できる唯一のファイルです(モジュール内の他のすべてのSwiftファイルには宣言のみを含めることができます)。

Cocoa Touchは、@UIApplicationMainファイルの代わりに UIApplicationDelegate の実装で main.Swift属性 を使用してエントリポイントをマークします。 Cocoaは、NSApplicationMainを単に呼び出した最小限のmain.Swiftファイルを使用していましたが、 Xcode 6.1以降@NSApplicationMain属性 を実装で使用します- NSApplicationDelegate

83
nathan

AppDelegate.Swiftファイルには、@UIApplicationMainがあります。
AppDelegateは初期エントリファイルです。

基本的に:main.mAppDelegate.mSwiftAppDelegate.Swiftにマージされます

36
h0ussni

ファイルと初期化 を読みたいかもしれません

例外は、「main.Swift」という名前の特別なファイルです。これは、プレイグラウンドファイルのように動作しますが、アプリのソースコードでビルドされます。 「main.Swift」ファイルには最上位コードを含めることができ、順序依存のルールも適用されます。実際、「main.Swift」で実行するコードの最初の行は、プログラムのメインエントリポイントとして暗黙的に定義されています。これにより、最小のSwiftプログラムを1行にすることができます(その行が「main.Swift」にある限り)。

Xcodeでは、Macテンプレートにはデフォルトで「main.Swift」ファイルが含まれますが、iOSアプリの場合、新しいiOSプロジェクトテンプレートのデフォルトは、@ UIApplicationMainを通常のSwiftファイルに追加することです。これにより、コンパイラはiOSアプリのメインエントリポイントを合成し、「main.Swift」ファイルの必要性を排除します。

または、Objective-CからSwiftにプロジェクトをインクリメンタルに移行するときに一般的な、Objective-Cで記述されたmainの実装にリンクできます。

25
onmyway133