2017-07-12 14 views
2
- (void)applicationWillTerminate:(UIApplication *)application { 

    NSLog(@"Application is terminating now."); 
} 

この機能は、アプリケーションが終了するときに呼び出され、私の質問にコード行を追加するために追加しました。 iOSでは、ある段階でアプリケーションがクラッシュし、そのケースを適切に処理していない場合、ユーザーはメイン画面(クラッシュしたアプリケーションの外側)に移動するように設定されます。 アンドロイドでは、ユーザーがホーム画面に移動するように設定するクラッシュシナリオを処理していない場合、ほとんどのアプリケーションで見たことがあります。 クラッシュが発生したときに呼び出されるメソッドがあれば、そのステージでfirstViewを呼び出すことができます。 私はこの方法/代理人をこれまで客観的なc/swiftでは見つけられませんでした。 誰でも知っていれば、ここで答えられます。 注:私は正常にほぼすべての例外シナリオを扱うが、いくつかのシナリオでは、アプリケーションを失敗したか、他のいくつかの問題があれば場合に尋ねてきた意味で聞いてるのよようアプリケーションクラッシュで最初の画面/ホーム画面に移動

@try { 

} @catch (NSException *exception) { 

} @finally { 

} 

を使用することをお勧めしないでください任意のデバイスでクラッシュする回避策は何ですか?

答えて

2

をクラッシュする前にクラッシュが発生する問題のいくつかを与えるコードで例外をキャッチすることができます。

func exceptionHandler(exception : NSException) { 
    // Do something before the app is automatically terminated 
    print(exception.callStackSymbols) 
} 

NSSetUncaughtExceptionHandler(exceptionHandler) 

このハンドラは、クラッシュの直後、アプリが強制終了される前に呼び出されます。 アプリケーションがクラッシュするのを止めることはできませんが、少なくとも呼び出しスタックを取得してログに記録し、何が起きたのかを知ることができます。

+0

これで面白いです。これは例外の理由を示していますが、返信に感謝しますが、アプリケーションがクラッシュするのを止めることができるような種類の応答を待っています。 –

+0

バリ島で言及したように、アプリケーションがクラッシュするのを止めることはできません。未処理の例外が発生すると、システムが処理を引き継ぎ、クラッシュすること以外に選択肢を残します。 – Thomas

+0

はい、私はたくさんの検索をしましたが、今は解決策が見つからなかったので、私はあなたの答えを受け入れる必要があります。 –

1

あなたはそうすることができません。デリゲートapplicationWillTerminateは、アプリケーションが終了する直前に呼び出されます。あなたはアプリの終了を避けることができません。 applicationWillTerminateが呼び出されると、アプリは終了します。あなたがクラッシュするのを避ける唯一の方法は、それを解決する問題&を見つけることです。あなたはdidRecieveMemoryWarningでメモリの警告をキャッチすることができますし、あなたがそうのようなNSSetUncaughtExceptionHandlerとのクラッシュを引き起こした例外をキャッチすることができ

+0

はい、わかります。私はちょうど私の質問にコードの行を追加するためにこれを追加しました。私はどんな仕事があるのか​​聞いていますか? –

+0

残念ながら、あなたのクラッシュの問題を解決する以外の方法はありません – Bali

+0

はい、あなたは正しいです。 –

関連する問題