Часть меня думает, что я понимаю концепцию NSNotification. Это централизованная система вещания со строковыми уведомлениями. Сообщение на одной стороне, наблюдайте на одной или нескольких других сторонах и действуйте соответствующим образом. Другая часть меня, хотя, часть, которая должна написать код, путается каждый раз, когда мне нужно уведомление. Какая часть кода входит в заголовок/реализацию, какие файлы фактически выполняют наблюдение и как я держу его в беспорядке? Время, чтобы выправить это, поможете мне проверить эти предположения? Я довольно уверен до числа 4, но номер 5 попадает в джекпот с путаницей.Концепция NSNotification - какой код кода идет где?
- NSNotifications созданы с помощью от [NSNotification defaultCenter], один не Alloc/инициализации в NSNotification. Верный?
- Объект, выполняющий postNofification feat, всегда пропускает
self
в код сообщения:[[NSNotificationCenter defaultCenter] postNotificationName:@"note name" object:self]
. Верный? - Событие барботирования существует на других языках, но не в Objective-C с NSNotification. Вы не передаете уведомления, вы делаете имя уведомления достаточно определенным для глобальной трансляции. Верный?
- Если вы все еще хотите передать уведомление, отправленное объектом A, вы наблюдаете его в B, обрабатываете его и публикуете новое, более конкретное уведомление для объекта C для наблюдения. Например.
@"MenuItemTapped"
от A до B и@"NavigateTo"
от B до C. Правильно? - Имя уведомления - NSString. Поскольку как плакат, так и наблюдатель хотят избежать опечаток, мы сохраняем константу NSString в [extern const | define | class method | none of the above]. Не могли бы вы помочь мне выбрать один?
- Одной из попыток было создать что-то вроде файла
NotificationNames.h
, в котором будут содержаться все объявленияextern NSString *const NOTE_NAME
. Тем не менее это подрывает переносимость уведомления. - Еще одна попытка заключалась в подклассе NSNotification (с шаблоном XCode для быстрого сохранения), но поскольку эта концепция взята из подкласса класса Event в AS3, она показалась очень не объективной-c-ish. Там также странность, которую вы не можете назвать [super init] в NSNotification, поэтому все стало из-под контроля.
- Мои проблемы с этим возникают из-за громоздких заявлений
#import
. Как свести к минимуму опечатки, но сохранить константы/определяет переносимость?
- Одной из попыток было создать что-то вроде файла
Также рекомендуется удалить всех наблюдателей из вашего класса в dealloc, которые вы добавили в NSNotificationCenter. –