2012-11-15 60 views
0

我想在應用程序關閉時執行某些清理任務。我使用的觀察者如下:iOS 5 - 關機鉤

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillResignActiveNotif:) name:UIApplicationWillResignActiveNotification object:nil]; 

當應用程序轉到後臺時會收到通知。

問題是,如果應用程序崩潰,沒有通知讓我做某件事。

我看到testflight.com使用鉤子來恢復崩潰信息,我想知道是否有可能檢測到崩潰並執行一些任務。

我關心的是關於調用:

CLLocationManager.stopMonitoringSignificantLocationChanges 

未完成時應用程序崩潰,讓用戶在上面恆定的位置圖標。我知道碰撞不應該頻繁發生,但是如果我能在這種情況下儘可能地清理碰撞。

+0

如果你的應用程序崩潰,操作系統立即終止它 - 有**沒辦法**你可以做任何事情後。解決方案是修復你的應用程序,使它永不崩潰。 – 2012-11-15 10:23:10

+1

你看過這個解決方案嗎? http://stackoverflow.com/questions/10885313/detect-app-crashed-during-load-last-time-it-was-run –

回答

3

你可以安裝一個全球exceptionHandler的,甚至是signalHandler http://www.cocoawithlove.com/2010/05/handling-unhandled-exceptions-and.html

但要記住:不要繼續在崩潰後運行。這是不安全的:D

+0

當應用程序崩潰時,您應該**不**運行任何Objective-C代碼,因爲它不安全!看到http://landonf.bikemonkey.org/code/objc/Reliable_Crash_Reporting.20110912.html – Kerni

+0

我說它不安全,但它的作品..並進入模態runloop不傷害。你必須將其設計成可重入式安全的,而不必保重,事實並非如此。 –