Функции UIApplicationDelegate в других классах - PullRequest
3 голосов
/ 27 марта 2012

Можно ли соответствовать UIApplicationDelegate и успешно ли вызывать все функции, вызываемые при запуске / закрытии, в ЛЮБОМ классе?Например, если у меня есть класс, в котором было бы неплохо сохранить много данных при закрытии приложения, но я не хочу создавать ссылку на него в делегате приложения, было бы нормально простоон соответствует протоколу UIApplicationDelegate, затем выполняет сохранение в (void)applicationWillResignActive:(UIApplication *)application?

Чтобы быть более кратким: есть ли опасность, что несколько классов соответствуют UIApplicationDelegate?

Ответы [ 2 ]

4 голосов
/ 27 марта 2012

Нет необходимости устанавливать делегата в качестве вашего класса, а также невозможно иметь двух делегатов.
Что вы можете сделать, это зарегистрироваться для уведомления.

UIApplicationDidBecomeActiveNotification
UIApplicationDidChangeStatusBarFrameNotification
UIApplicationDidChangeStatusBarOrientationNotification
UIApplicationDidEnterBackgroundNotification
UIApplicationDidFinishLaunchingNotification

и т. Д., Проверьте документацию Уведомления в UIApplication Ссылка на класс

4 голосов
/ 27 марта 2012

Только один делегат может быть назначен для любого объекта одновременно. Похоже, что вы действительно хотите здесь сделать, это зарегистрироваться для уведомлений.

Или, если нет уведомлений о том, что вы хотите, настройте делегат приложения, чтобы он отправлял настраиваемые уведомления любым слушателям во всех различных классах, над которыми вы хотите работать, когда срабатывает определенный делегат приложения.

И чтобы ответить на ваш лаконичный вопрос, не должно быть «опасности», если несколько классов соответствуют UIApplicationDelegate, но опять же, вы можете иметь только одного делегата, отвечающего на UIApplication одновременно.

...