Hier ist, wie für solche Ereignisse hören:
// Register for notification when the app shuts down
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myFunc) name:UIApplicationWillTerminateNotification object:nil];
// On iOS 4.0+ only, listen for background notification
if(&UIApplicationDidEnterBackgroundNotification != nil)
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myFunc) name:UIApplicationDidEnterBackgroundNotification object:nil];
}
// On iOS 4.0+ only, listen for foreground notification
if(&UIApplicationWillEnterForegroundNotification != nil)
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myFunc) name:UIApplicationWillEnterForegroundNotification object:nil];
}
Hinweis: Die if(&SomeSymbol)
Kontrollen stellen sicher, dass Ihr Code auf iOS arbeiten 4.0+ und auch auf iOS 3.x - wenn Sie bauen gegen ein iOS 4.x oder 5.x SDK und setzen Sie das Implementierungsziel auf iOS 3.x Ihre App kann immer noch auf 3.x-Geräten laufen, aber die Adresse der relevanten Symbole wird Null, und deshalb wird es nicht versuchen zu fragen für Benachrichtigungen, die nicht auf 3.x-Geräten vorhanden sind (was zum Absturz der App führen würde).
Update: In diesem Fall werden die if(&Symbol)
prüft nun überflüssig sind (es sei denn, Sie wirklich müssen iOS 3 aus irgendeinem Grund unterstützen). Es ist jedoch nützlich, diese Technik zu kennen, um zu überprüfen, ob eine API existiert, bevor Sie sie verwenden. Ich bevorzuge diese Technik als das Testen der Betriebssystemversion, weil Sie überprüfen, ob die spezifische API vorhanden ist, anstatt externe Kenntnisse darüber zu verwenden, welche APIs in welchen Betriebssystemversionen vorhanden sind.
Dank für die schnelle Antwort! –