Например, когда памяти становится мало, Система отправляет уведомление UIApplicationDidReceiveMemoryWarningNotification. Это все, что Apple говорит в своих документах на тот момент. Но откуда приходит это уведомление и каким методом оно отправляется? Или где и как я могу зарегистрировать то, что я получаю уведомления?
Вопрос
Где и как зарегистрировать объект для получения Уведомления?
Ответы
Ответ 1 · рейтинг 5 · mouviciel
Оно отправляется в центр уведомлений, где все уведомления централизованы. Объект, который хочет получить информацию об этом уведомлении, регистрируется в центре уведомлений, сообщая, какое уведомление он хочет получить и какой метод следует вызывать при получении уведомления.
Для получения дополнительной информации см. темы по программированию уведомлений для Cocoa и справочник по классу NSNotification .
Ответ 2 · рейтинг 17 · m4rkk
В коде инициализации класса, который вы хотите получить, выполните следующий вызов метода:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleMemoryWarning:) name: UIApplicationDidReceiveMemoryWarningNotification object:nil];
Это предполагает, что ваш класс также реализует метод handleMemoryWarning следующим образом:
- (void) handleMemoryWarning:(NSNotification *)notification
{
}
Ответ 3 · рейтинг 5 · Jim
Гораздо проще использовать делегат приложения и реализовать необязательный метод
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
Наиболее распространенные уведомления также доступны, переведенные в вызовы делегата, как правило, в необязательные методы в формальном протоколе. Ваш делегат может быть любым объектом, который вам нравится.
Ответ 4 · Ben Jackson
Имейте в виду, что ваш селектор должен будет принять уведомление в качестве аргумента.
Если вы используете что-то вроде @selector(handleMemoryWarning) и - (void) handleMemoryWarning { }, объект НЕ БУДЕТ отправлять уведомление, и вы по-прежнему будете удерживать всю свою память.
Я был просто укушен этим.
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- Проблема с настройкой делегата CABasicAnimation в Swift 3?
- Можем ли мы использовать два отдельных xib для iPhone и iPad для одного контроллера просмотра?
- Как переименовать сцену по умолчанию в шаблоне iOS SpriteKit?
- UIPopoverController в UINavigationController
- Странное поведение UIButton: это нормально?
- Как вставить представление в существующую ячейку таблицы?