2017-08-07 20 views
0

私はアンドロイドでonDestroy()のように動作する迅速なメソッドを探しています。ホームボタンが押されたときに呼び出されないようにするには、アプリケーションが完全に終了したときにのみ呼び出されるべきです。私はdeinitメソッドを使ってみましたが、決して呼び出されませんでした。IOSのonDestroy()と同等です

答えて

0

iOS環境で適切な同等品はapplicationWillTerminate(_:)AppDelegateです。

非同期操作はここでは正しく実行できません。ここでは正しく動作しません。

+0

私はapplicationDidFinishLaunchingが正しいメソッドではないと思います。ユーザーがホームボタンをダブルクリックしてからスワイプするなど、アプリケーションが閉じられたときに呼び出されるものが必要です – cvrattos

+0

編集した回答を確認してください。 – the4kman

0

ユーザーがホームボタンを押して電話画面メニューに移動した場合、アプリはバックグラウンド状態になります。この関数が呼び出されます:

optional func applicationDidEnterBackground(_ application: UIApplication) 

ユーザーが3分以上のダブルホームボタンを押すとアプリを上にスワイプすることによって、またはbacgroundでアプリを持っていることによって、アプリを終了している場合、このメソッドが呼び出されます:

optional func applicationWillTerminate(_ application: UIApplication) 

どちらの関数も既にAppDelegateクラスにあります。

希望すると便利です。

+0

私はapplicationWillTerminateメソッドを試しましたが、実行しようとしたときにこのエラーが発生しました:「オプション」はprotocalメンバーにしか適用できません – cvrattos

+0

xcodeを終了するとエラーが発生しますか?このメソッドの中で印刷(「テスト」)してブレークポイントを置くことができますか?それがそれに達するのを見るために? –

+0

申し訳ありませんが、私は私のエディタにあなたのコードを貼り付け、シミュレータが実行されないことを意味します。ビルドに失敗しました。 – cvrattos

0

iOS相当品は存在しません。 あなたはアプリがフォアグラウンド状態を残しているとき、それが呼ばれています

optional func applicationWillResignActive(_ application: UIApplication) 

を使用することができます。

または

optional func applicationWillTerminate(_ application: UIApplication) 

この1つがアプリがバックグラウンドで動作しているとき、それは特別な権限を持っていない限り、すなわち、ほとんどの場合、それは、呼び出されません、アプリが実行されている場合にのみ呼び出されます。

deinitは、アプリケーション終了時に呼び出されることはありません。その目的は、オブジェクトを破棄してメモリを解放したときに実行されるためです。アプリケーションが終了すると、プロセス全体がメモリスタックで破壊されるため、メモリを解放することは無意味です。

0

のiOSでviewDidUnload方法がありましたが、それは多くの人がapplicationWillTerminateに言及しているので、あなたは多分、UIApplicationWillTerminate通知のための機能に関連付けて登録して行うことができ、iOSの6 別のオプション以降廃止されていますクリーンアップなどその機能であなたが望むものは何でも。

関連する問題