NSNotification
Соответствует
-
AnyObject -
CVarArgType -
Сопоставимый -
Hashable -
NSCoding -
NSCopying -
NSObjectProtocol -
Печатаемый -
NSCoding -
NSCopying -
NSObject
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в iOS 2.0 и позже.
Объекты NSNotification инкапсулируют информацию так, чтобы она могла быть широковещательно передана к другим объектам объектом NSNotificationCenter. Объект NSNotification (называемый уведомлением) содержит имя, объект и дополнительный словарь. Имя является тегом, идентифицирующим уведомление. Объект является любым объектом, который плакат уведомления хочет отправить наблюдателям того уведомления (обычно, это - объект, отправивший уведомление). Словарь хранит другие связанные объекты, если таковые имеются. Объекты NSNotification являются неизменными объектами.
Можно создать объект уведомления с методами класса notificationWithName:object: или notificationWithName:object:userInfo:. Однако Вы обычно не создаете свои собственные уведомления непосредственно. Методы NSNotificationCenter postNotificationName:object: и postNotificationName:object:userInfo: позвольте Вам удобно отправлять уведомление, не создавая его сначала.
Объектное сравнение
Объекты уведомления сравнены с помощью равенства указателя для локальных уведомлений. Распределенные строки использования уведомлений как их объекты и те строки сравнены с помощью isEqual: потому что равенство указателя не целесообразно через границы процесса.
Создание подклассов
Можно разделить на подклассы NSNotification содержать информацию в дополнение к имени уведомления, объекту и словарю. Эти дополнительные данные должны быть согласованы между notifiers и наблюдателями.
NSNotification является кластером класса без переменных экземпляра. Также, необходимо разделить на подклассы NSNotification и переопределите примитивные методы name, object, и userInfo. Можно выбрать любой определяемый инициализатор, который Вы любите, но быть уверенным, что Ваш инициализатор не вызывает [super init]. NSNotification не предназначен, чтобы быть инстанцированным непосредственно, и init метод повышает исключение.
-
Возвращает новый объект уведомления с указанным именем и объект.
Объявление
Swift
convenience init(nameaName: String, objectanObject: AnyObject?)Objective C
+ (instancetype)notificationWithName:(NSString *)aNameobject:(id)anObjectПараметры
aNameИмя для нового уведомления. Может не быть
nil.anObjectОбъект для нового уведомления.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
См. также
postNotificationName:object:(NSNotificationCenter) -
Возвращает объект уведомления с указанным именем, объект и информацию о пользователе.
Объявление
Objective C
+ (instancetype)notificationWithName:(NSString *)aNameobject:(id)anObjectuserInfo:(NSDictionary *)userInfoПараметры
aNameИмя для нового уведомления. Может не быть
nil.anObjectОбъект для нового уведомления.
userInfoСловарь информации о пользователе для нового уведомления. Может быть
nil.Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в iOS 2.0 и позже.
См. также
+ notificationWithName:object:postNotificationName:object:userInfo:(NSNotificationCenter) -
init (name:object:userInfo:) - initWithName:object:userInfo:Определяемый инициализаторИнициализирует уведомление с указанным именем, объектом и информацией о пользователе.
Объявление
Swift
init(nameaName: String, objectobject: AnyObject?, userInfouserInfo: [NSObject : AnyObject]?)Objective C
- (instancetype)initWithName:(NSString *)aNameobject:(id)objectuserInfo:(NSDictionary *)userInfoПараметры
aNameИмя для нового уведомления. Может не быть
nil.objectОбъект для нового уведомления.
userInfoСловарь информации о пользователе для нового уведомления. Может быть
nil.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 4.0 и позже.
-
nameСвойствоИмя уведомления. (только для чтения)
Обсуждение
Обычно Вы используете это свойство для обнаружения, какое уведомление Вы имеете дело с тем, когда Вы получаете уведомление.
Специальные замечания
Имена уведомления могут быть любой строкой. Для предотвращения коллизий имени Вы могли бы хотеть использовать префикс, это является определенным для Вашего приложения.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
-
objectСвойствоОбъект связался с уведомлением. (только для чтения)
Объявление
Swift
var object: AnyObject? { get }Objective C
@property(readonly, retain) id objectОбсуждение
Это часто - объект, отправивший это уведомление. Это может быть
nil.Обычно Вы используете этот метод для обнаружения то, что возражает, что уведомление применяется к при получении уведомления.
Например, предположите регистрацию объекта получить сообщение
handlePortDeath:когда уведомление «PortInvalid» отправляется на центр уведомления и этоhandlePortDeath:потребности получить доступ к объекту, контролирующему порт, который теперь недопустим.handlePortDeath:может получить тот объект как показано здесь:- (void)handlePortDeath:(NSNotification *)notification{...[self reclaimResourcesForPort:notification.object];...}
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
-
userInfoСвойствоСловарь информации о пользователе связался с получателем. (только для чтения)
Объявление
Swift
var userInfo: [NSObject : AnyObject]? { get }Objective C
@property(readonly, copy) NSDictionary *userInfoОбсуждение
Может быть
nil.Словарь информации о пользователе хранит любые дополнительные объекты, который возражает, что получение уведомления могло бы использовать.
Например, в Наборе Приложения, объекты NSControl отправляют
NSControlTextDidChangeNotificationкаждый раз, когда полевой редактор (объект NSText) изменяет текст в NSControl. Это уведомление обеспечивает объект NSControl как связанный объект уведомления. Для обеспечения доступа к полевому редактору объект NSControl, регистрация уведомления добавляет полевого редактора к словарю информации о пользователе уведомления. Объекты, получающие уведомление, могут получить доступ к полевому редактору и объекту NSControl регистрация уведомления следующим образом:- (void)controlTextDidBeginEditing:(NSNotification *)notification{NSText *fieldEditor = [notification.userInfoobjectForKey:@"NSFieldEditor"]; // the field editorNSControl *postingObject = notification.object; // the object that posted the notification...}
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
