Например, когда памяти становится мало, Система отправляет уведомление UIApplicationDidReceiveMemoryWarningNotification
. Это все, что Apple говорит в своих документах на тот момент. Но откуда приходит это уведомление и каким методом оно отправляется? Или где и как я могу зарегистрировать то, что я получаю уведомления?
Где и как зарегистрировать объект для получения Уведомления?
Ответы (4)
Оно отправляется в центр уведомлений, где все уведомления централизованы. Объект, который хочет получить информацию об этом уведомлении, регистрируется в центре уведомлений, сообщая, какое уведомление он хочет получить и какой метод следует вызывать при получении уведомления.
Для получения дополнительной информации см. темы по программированию уведомлений для Cocoa и справочник по классу NSNotification .
В коде инициализации класса, который вы хотите получить, выполните следующий вызов метода:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleMemoryWarning:) name: UIApplicationDidReceiveMemoryWarningNotification object:nil];
Это предполагает, что ваш класс также реализует метод handleMemoryWarning следующим образом:
- (void) handleMemoryWarning:(NSNotification *)notification
{
}
Гораздо проще использовать делегат приложения и реализовать необязательный метод
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
Наиболее распространенные уведомления также доступны, переведенные в вызовы делегата, как правило, в необязательные методы в формальном протоколе. Ваш делегат может быть любым объектом, который вам нравится.
UI
в начале, Notification
в конце и уменьшив первую букву.
- person Abizern; 11.04.2009
Имейте в виду, что ваш селектор должен будет принять уведомление в качестве аргумента.
Если вы используете что-то вроде @selector(handleMemoryWarning) и - (void) handleMemoryWarning { }, объект НЕ БУДЕТ отправлять уведомление, и вы по-прежнему будете удерживать всю свою память.
Я был просто укушен этим.
performSelector
заботился о параметре или нет. Есть идеи, что это за устройство и версия ОС?
- person Dan Rosenstark; 12.10.2011