2012-02-13 12 views
10

Potrzebuję zapisać niektóre dane w mojej aplikacji, gdy aplikacja zostanie zakończona, a nawet jeśli ulegnie awarii. Wiem, że applicationWillTerminate jest wywoływana, gdy aplikacja kończy, ale nie jestem pewien, która metoda jest wywoływana, gdy aplikacja ulega awarii.
Czy ktoś może mi w tym pomóc?Czy istnieje jakaś metoda w appDelegate, która jest wywoływana, gdy aplikacja ulega awarii?

+1

powinieneś napisać aplikację, która się nie psuje, co rozwiązuje twój problem. –

+2

Bardzo dobra uwaga Vince. Ale nigdy nie wiadomo, co może spowodować awarię aplikacji. Radzenie sobie z tym wcześniej jest lepsze niż zrobienie tego później. – Nitish

Odpowiedz

14

Można dodać własny wyjątek obsługi, aby złapać błąd.

Najpierw trzeba zdefiniować metodę wyjątek:

powiedz aplikację do korzystania z obsługi wyjątku:

- (void)applicationDidFinishLaunching:(UIApplication *)application { 
    NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler); 
    // The rest if you code .... 
} 

nie ma sposobu, aby aplikacja zapisać dane na temat awarii, ponieważ oszczędzanie może być przyczyną awarii!

+0

Czy mogę zapisać aktualny czas (czas awarii aplikacji) w pliku NSUserDefaults w metodzie uncaughtExceptionHandler? Czy to najlepsza praktyka? – Bhushan

+0

Nie sądzę, że możesz, ale możesz napisać swój błąd do piaskownicy aplikacji. Tak działają biblioteki takie jak crashlytics, hockyapp i sorte. – rckoenes

+0

dzięki za szybką odpowiedź. Czy istnieje inny sposób na zaoszczędzenie czasu podczas awarii aplikacji? Oszczędzam czas w metodzie ApplicationTerminate, ale nie wywołuję, gdy aplikacja ulega awarii. W rzeczywistości moja aplikacja jest w taki sposób, że potrzebuję czasu wylogowania ostatniej sesji do dalszego przetwarzania. Każda pomoc, którą możesz zapewnić, byłaby doceniona. – Bhushan

-3

Nie, nie można się dowiedzieć, kiedy aplikacja się zawiesi.

Powiązane problemy