Appleは終了ボタンを信じていません。しかし、あなたはあなたのアプリがクラッシュするのを捕まえない別の例外を投げることができますが、アプリがクラッシュすると承認されません。
あなたのinfo.plistでUIApplicationExitsOnSuspendをtrueに設定し、ホームボタンを押すだけでアプリケーションを終了させることができます。その場合、他のアプリへのリンクを終了ボタンにすることができます。
例外を常に発生させるifステートメントを変更すると、アプリケーションがクラッシュして終了するようにする必要があります。
- (void)handleException:(NSException *)exception
{
[self validateAndSaveCriticalApplicationData];
UIAlertView *alert =
[[[UIAlertView alloc]
initWithTitle:NSLocalizedString(@"Unhandled exception", nil)
message:[NSString stringWithFormat:NSLocalizedString(
@"You can try to continue but the application may be unstable.\n\n"
@"Debug details follow:\n%@\n%@", nil),
[exception reason],
[[exception userInfo] objectForKey:UncaughtExceptionHandlerAddressesKey]]
delegate:self
cancelButtonTitle:NSLocalizedString(@"Quit", nil)
otherButtonTitles:NSLocalizedString(@"Continue", nil), nil]
autorelease];
[alert show];
CFRunLoopRef runLoop = CFRunLoopGetCurrent();
CFArrayRef allModes = CFRunLoopCopyAllModes(runLoop);
while (!dismissed)
{
for (NSString *mode in (NSArray *)allModes)
{
CFRunLoopRunInMode((CFStringRef)mode, 0.001, false);
}
}
CFRelease(allModes);
NSSetUncaughtExceptionHandler(NULL);
signal(SIGABRT, SIG_DFL);
signal(SIGILL, SIG_DFL);
signal(SIGSEGV, SIG_DFL);
signal(SIGFPE, SIG_DFL);
signal(SIGBUS, SIG_DFL);
signal(SIGPIPE, SIG_DFL);
[exception raise];
}
アプリを強制的にシャットダウンする必要がある場合は、 'abort()'を呼び出すことができます。 –
こんにちは、@Tom、例外を処理するために上記のコードを取り上げましたが、アラートは表示されましたが、どのUIイベントにも応答せず、一度も解消しませんでした。何か案が? – fifth