didFinishLaunchingWithOptions
は、アプリが初めて実行を開始したときに呼び出されるはずではありませんか?このメソッドにブレークポイントを設定しましたが、シミュレーターでアプリを実行してもブレークポイントがヒットしません。つまり、メソッドが呼び出されません。アプリが起動するたびにUserDefaultsからいくつかのデータを読み込もうとしていますが、完全に無視されています。私が気づいたことの1つは、デフォルトではprivate func
func
の代わりに。 private
を削除すると、「UIApplicationDelegateにはほぼ同様のオプション要件があります」という警告が表示されます。誰かがこれが何を意味するのか、そしてprivate func
メソッドが無視されることと関係がありますか?シミュレーターでアプリを実行するときに、そのメソッドが呼び出されることもありますか?そうでない場合、アプリの起動後にデータが取得されているかどうかをテストするにはどうすればよいですか? AppDelegate
の他のすべてのメソッドは正常に呼び出されます(たとえば、applicationDidEnterBackground
メソッドは完全に正常に機能します)。
メソッドシグネチャを削除し、Xcodeにオートコンプリートさせます
また、AppDelegateのdidFinishLaunchingWithOptions
メソッドが呼び出されないという問題もありました。私の関数もプライベートとしてマークされ、次のようになりました
private func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
問題は、これが古い構文であるということです。プロジェクトをSwift 2.xからSwift 3 Xcodeに変換しなかったとき、どうやら私にとってはAppDelegateのメソッドを変換しませんでした。新しい構文は次のようになります。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool
Swift 4.2:
func application( _ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
for Swift 〜3.0 didFinishLaunchingWithOptionsを置き換えます次の署名で
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
}
didFinishLaunchingWithOptions
の1つにViewControllers
を実装しましたか?このメソッドのカスタム実装への呼び出しはありません。このメソッドはApplicationDelegate
で定義されており、アプリが起動されると常に呼び出されます。 ViewController
でメソッドを再度定義しておらず、AppDelegate
でメソッドが呼び出されていない場合は、シミュレーターをリセットしてみてください。シミュレータメニューからSimulator -> Reset content and settings
。
コンパイラがdidFinishLaunchingWithOptions
メソッドをプライベートにするように要求する場合は、メソッドのパラメータがエラーの原因である可能性があります。 application(_:didFinishLaunchingWithOptions :)デリゲートメソッドのパラメーターは、[NSObject:AnyObject]?ではなく、[UIApplicationLaunchOptionsKey:Any]?としてSwiftにブリッジされるようになりました。したがって、メソッドを変更します。示されている署名。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// ...
}
Swift 4.2:
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool
このメソッドはApplicationDelegateで定義されており、アプリが起動されると常に呼び出されます。 ViewControllerでメソッドを再度定義しておらず、AppDelegateのメソッドが呼び出されていない場合は、シミュレーターをリセットしてみてください。
シミュレーターを開く->メニューシミュレーター->コンテンツと設定をリセットします。
-(BOOL)application(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//..
}