Общий шаблон дизайна: если у вас есть несколько заинтересованных сторон в событии, не используйте делегатов, но уведомления. В этом случае вы должны зарегистрировать UIApplicationDidEnterBackgroundNotification
в вашем -init
методе каждого класса, в котором вы хотите обработать событие:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didEnterBackground)
name:UIApplicationDidEnterBackgroundNotification
object:[UIApplication sharedApplication]];
Затем напишите -(void)didEnterBackground
метод с вашим кодом. В своем методе -dealloc
обязательно отмените регистрацию уведомления:
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIApplicationDidEnterBackgroundNotification
object:nil];
Также имейте в виду, что для этого кода требуется iOS 4.x или выше. Если вы хотите сохранить совместимость с iOS 3, сначала проверьте доступность:
if ([[UIApplication sharedApplication] respondsToSelector:@selector(applicationState)]) {
// register UIApplicationDidEnterBackgroundNotification
}