Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Где и как зарегистрировать объект для получения Уведомления?

Автор вопроса: ThanksОтветов: 4

Например, когда памяти становится мало, Система отправляет уведомление UIApplicationDidReceiveMemoryWarningNotification. Это все, что Apple говорит в своих документах на тот момент. Но откуда приходит это уведомление и каким методом оно отправляется? Или где и как я могу зарегистрировать то, что я получаю уведомления?

ioscocoa-touchnsnotifications

Ответы

Ответ 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.

Похожие материалы