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

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

Ответы [ 4 ]

17 голосов
/ 11 апреля 2009

Из кода инициализации класса, для которого вы хотите получить уведомление, выполните следующий вызов метода:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleMemoryWarning:) name: UIApplicationDidReceiveMemoryWarningNotification object:nil];

Предполагается, что ваш класс также реализует метод handleMemoryWarning следующим образом:

- (void) handleMemoryWarning:(NSNotification *)notification
{
}
5 голосов
/ 11 апреля 2009

Гораздо проще использовать делегат приложения и реализовать дополнительный метод

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application

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

5 голосов
/ 11 апреля 2009

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

Для получения дополнительной информации вы можете обратиться к Темам программирования уведомлений для Какао и Ссылка на класс NSNotification .

0 голосов
/ 23 октября 2010

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

Если вы используете что-то вроде @selector (handleMemoryWarning) и - (void) handleMemoryWarning {}, объект НЕ БУДЕТ отправлять уведомление, и вы все равно будете удерживать всю свою память.

Я был просто укушен этим.

...