Ответ 1
Здесь, как слушать такие события:
// 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];
}
Примечание. Проверки if(&SomeSymbol)
гарантируют, что ваш код будет работать на iOS 4.0+, а также на iOS 3.x - если вы создаете против iOS 4.x или 5.x SDK и установите цель развертывания для iOS 3.x ваше приложение все еще может работать на устройствах 3.x, но адрес соответствующих символов будет равен нулю, и поэтому он не будет пытаться запрашивать уведомления, которые не существуют на устройствах 3.x(что приведет к сбою приложения).
Обновление: В этом случае проверки if(&Symbol)
теперь избыточны (если вам действительно не нужна поддержка iOS 3 по какой-либо причине). Однако полезно знать этот метод для проверки наличия API перед его использованием. Я предпочитаю эту технику, чем тестирование версии ОС, потому что вы проверяете, присутствует ли конкретный API, а не используют внешние знания о том, какие API-интерфейсы присутствуют в версиях ОС.