1. ホーム
  2. swift

[解決済み] UIApplicationMain "とは何ですか?

2023-06-09 23:23:04

質問

私はちょうど私の最初のSwiftプロジェクトを作成しました。 AppDelegate.swift の中に、クラス宣言の上に一行があります。

...
import UIKit
import CoreData

@UIApplicationMain // <- WHY IS IT HERE?
class AppDelegate: UIResponder, UIApplicationDelegate {
... 

どのように解決するのですか?

この @UIApplicationMain 属性は、Swift の些細な main.m ファイル (その目的は main 関数を実装し、すべての C プログラムのエントリポイントである UIApplicationMain を呼び出して、Cocoa Touchの実行ループとアプリのインフラストラクチャをキックオフします)。

Objective-C では、アプリごとに設定する主な (へぇー) ビットは UIApplicationMain 関数が提供するアプリごとの設定の主なものは、アプリのカスタムクラスの 1 つを、共有された UIApplication オブジェクトのデリゲートとして、アプリのカスタムクラスを指定することです。Swift では、このクラスを簡単に指定することができます。 @UIApplicationMain 属性で指定します。 をそのクラスの宣言に追加します。(この場合でも UIApplicationMain 関数を直接呼び出すこともできます。Swift では、トップレベルのコードでその呼び出しを main.swift ファイル内のトップレベルのコードにその呼び出しを置きます)。

@UIApplicationMain は iOS 専用です。OS X では、アプリデリゲートは伝統的に Info.plist で指定されたメインの nib ファイルに設定されます (Swift では ObjC と同じ) - しかし OS X storyboards ではメインの nib ファイルがないため、次のようになります。 @NSApplicationMain はそこで同じことをします。