Использование двух делегатов - PullRequest
1 голос
/ 08 марта 2011

Я новичок в программировании iPhone.Я хочу вызвать функцию, которая принадлежит одному из моих представлений в MyAppDelegate.Я хочу сделать это, потому что не могу найти ни одного события ApplicationDidEnterBackground () в поле зрения.Итак, в основном я хочу вызвать функцию представления, когда приложение свернуто.Я пытался использовать делегат.Однако я не могу найти, как использовать два делегата, так как MyAppDelegate уже имеет один.Пожалуйста, помогите.

1 Ответ

3 голосов
/ 08 марта 2011

Общий шаблон дизайна: если у вас есть несколько заинтересованных сторон в событии, не используйте делегатов, но уведомления. В этом случае вы должны зарегистрировать 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
}
...