Swiftにはmain()
メソッドはありません。プログラムはどこかから実行を開始する必要があります。では、Swiftコード実行のエントリポイントは何であり、どのように決定されるのでしょうか。
プレーンSwiftモジュールのエントリポイントは、main.Swift
というモジュール内のファイルです。 main.Swift
は、トップレベルで式とステートメントを使用できる唯一のファイルです(モジュール内の他のすべてのSwiftファイルには宣言のみを含めることができます)。
Cocoa Touchは、@UIApplicationMain
ファイルの代わりに UIApplicationDelegate
の実装で main.Swift
属性 を使用してエントリポイントをマークします。 Cocoaは、NSApplicationMain
を単に呼び出した最小限のmain.Swift
ファイルを使用していましたが、 Xcode 6.1以降 は @NSApplicationMain
属性 を実装で使用します- NSApplicationDelegate
。
AppDelegate.Swift
ファイルには、@UIApplicationMain
があります。
AppDelegateは初期エントリファイルです。
基本的に:main.m
とAppDelegate.m
はSwift
でAppDelegate.Swift
にマージされます
ファイルと初期化 を読みたいかもしれません
例外は、「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の実装にリンクできます。