Wie behandeln UIApplicationWillTerminateNotification IOS4?

IOS4 bin ich der Registrierung folgende Meldung:

[[NSNotificationCenter defaultCenter]   addObserver:self
                                                 selector:@selector(appWillTerminate:)
                                                 name:UIApplicationWillTerminateNotification
                                                 object:[UIApplication sharedApplication]];

-(void)appWillTerminate:(UIApplication *) app {
    NSLog(@"terminate");
}

Weiß ich, dass dies nicht genannt, in allen Situationen wie in der vorherigen iOS-Versionen, jedoch einfach durch die Erfassung bekomme ich eine EXC_BAD_ACCESSS wenn die app beendet wird. Trotzdem kann ich nicht entfernen weil mein app unterstützt iOS3.0+. Wie kann ich das umgehen?

UPDATE: Hier ist der crash-log:

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000011
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                 0x0000441c objc_msgSend + 20
1   Foundation                      0x00015432 _nsnote_callback + 150
2   CoreFoundation                  0x000271da __CFXNotificationPost_old + 390
3   CoreFoundation                  0x00026e7a _CFXNotificationPostNotification + 122
4   Foundation                      0x00004720 -[NSNotificationCenter postNotificationName:object:userInfo:] + 64
5   Foundation                      0x0000de3a -[NSNotificationCenter postNotificationName:object:] + 14
6   UIKit                           0x000bef10 -[UIApplication _terminateWithStatus:] + 164
7   UIKit                           0x000be1b0 -[UIApplication _handleApplicationSuspend:eventInfo:] + 1980
8   UIKit                           0x0007e4a0 -[UIApplication handleEvent:withNewEvent:] + 3620
9   UIKit                           0x0007d470 -[UIApplication sendEvent:] + 60
10  UIKit                           0x0007ccf8 _UIApplicationHandleEvent + 6804
11  GraphicsServices                0x00005dd8 PurpleEventCallback + 1024
12  CoreFoundation                  0x00035e40 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 22
13  CoreFoundation                  0x00035dfe __CFRunLoopDoSource1 + 158
14  CoreFoundation                  0x0002809e __CFRunLoopRun + 574
15  CoreFoundation                  0x00027d74 CFRunLoopRunSpecific + 220
16  CoreFoundation                  0x00027c82 CFRunLoopRunInMode + 54
17  GraphicsServices                0x00004e84 GSEventRunModal + 188
18  UIKit                           0x00004f8c -[UIApplication _run] + 564
19  UIKit                           0x000024cc UIApplicationMain + 964
Die EXC_BAD_ACCESS ist wahrscheinlich in keinem Zusammenhang. Ich glaube nicht, dass UIApplicationWillTerminateNotification ist immer gesendet, der auf Geräten mit Unterstützung für mustitasking. Haben Sie irgendeinen code in applicationWillEnterBackground: oder die entsprechende Benachrichtigung?
Seltsam genug, entfernte ich den ganzen code in applicationWillEnterBackground und immer noch das gleiche passiert, oben auf, dass, wenn ich entfernen Sie die Benachrichtigung für UIApplicationWillTerminateNotification alle funktioniert. Auch dies geschieht nur auf dem Gerät, nicht auf den simulator. Wird die update-Frage mit den crash-log.

InformationsquelleAutor Valentin Radu | 2011-06-28

Schreibe einen Kommentar