NSNotificationCenter
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в iOS 2.0 и позже.
NSNotificationCenter объект (или просто, центр уведомления) обеспечивает механизм для широковещательной информации в программе. NSNotificationCenter объект является по существу таблицей отгрузки уведомления.
Объекты регистрируются в центре уведомления для получения уведомлений (NSNotification объекты) использование addObserver:selector:name:object: или addObserverForName:object:queue:usingBlock: методы. Каждый вызов этого метода указывает ряд уведомлений. Поэтому объекты могут зарегистрироваться как наблюдатели различных наборов уведомления путем вызова этих методов несколько раз.
Каждая рабочая программа Какао имеет центр уведомления по умолчанию. Вы обычно не создаете свое собственное. NSNotificationCenter объект может поставить уведомления только в единственной программе. Если Вы хотите отправить уведомление другим процессам или получить уведомления от других процессов, используйте экземпляр NSDistributedNotificationCenter.
-
Возвращает центр уведомления процесса по умолчанию.
Объявление
Swift
class func defaultCenter() -> NSNotificationCenterObjective C
+ (NSNotificationCenter *)defaultCenterВозвращаемое значение
Центр уведомления текущего процесса по умолчанию, использующийся для системных уведомлений.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
-
Добавляет запись в таблицу отгрузки получателя с очередью уведомления и блоком, чтобы добавить к очереди и дополнительным критериям: имя уведомления и отправитель.
Объявление
Swift
func addObserverForName(_name: String?, objectobj: AnyObject?, queuequeue: NSOperationQueue?, usingBlockblock: (NSNotification!) -> Void) -> NSObjectProtocolObjective C
- (id<NSObject>)addObserverForName:(NSString *)nameobject:(id)objqueue:(NSOperationQueue *)queueusingBlock:(void (^)(NSNotification *note))blockПараметры
nameИмя уведомления, для которого можно зарегистрировать наблюдателя; т.е. только уведомления с этим именем используются, чтобы добавить блок к очереди работы.
Если Вы передаете
nil, центр уведомления не использует имя уведомления, чтобы решить, добавить ли блок к очереди работы.objОбъект, уведомления которого Вы хотите добавить блок к очереди работы.
Если Вы передаете
nil, центр уведомления не использует отправителя уведомления, чтобы решить, добавить ли блок к очереди работы.queueОчередь та работы, к который
blockдолжен быть добавлен.Если Вы передаете
nil, блок выполняется синхронно на потоке регистрации.blockБлок, который будет выполняться, когда получено уведомление.
Блок копируется центром уведомления и (копия) сохраненный, пока не удалена регистрация наблюдателя.
Блок берет один параметр:
notificationУведомление.
Возвращаемое значение
Непрозрачный объект для действия как наблюдатель.
Обсуждение
Если данное уведомление инициировало больше чем один блок наблюдателя, блоки могут все быть выполнены одновременно с уважением к друг другу (но на их данной очереди или на текущем потоке).
Следующий пример показывает, как можно зарегистрироваться для получения уведомлений изменения локали.
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];self.localeChangeObserver = [center addObserverForName:NSCurrentLocaleDidChangeNotification object:nilqueue:mainQueue usingBlock:^(NSNotification *note) {NSLog(@"The user's locale changed to: %@", [[NSLocale currentLocale] localeIdentifier]);}];
Чтобы не зарегистрировать наблюдения, Вы передаете объект, возвращенный этим методом к
removeObserver:. Необходимо вызватьremoveObserver:илиremoveObserver:name:object:перед любым объектом, указаннымaddObserverForName:object:queue:usingBlock:освобожден.NSNotificationCenter *center = [NSNotificationCenter defaultCenter];[center removeObserver:self.localeChangeObserver];
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 4.0 и позже.
-
Добавляет запись в таблицу отгрузки получателя с наблюдателем, уведомление селекторные и дополнительные критерии: имя уведомления и отправитель.
Объявление
Swift
func addObserver(_notificationObserver: AnyObject, selectornotificationSelector: Selector, namenotificationName: String?, objectnotificationSender: AnyObject?)Objective C
- (void)addObserver:(id)notificationObserverselector:(SEL)notificationSelectorname:(NSString *)notificationNameobject:(id)notificationSenderПараметры
notificationObserverОбъект, регистрирующийся как наблюдатель. Это значение не должно быть
nil.notificationSelectorСелектор, указывающий сообщение получатель, отправляет
notificationObserverуведомлять его относительно регистрации уведомления. Метод, указанныйnotificationSelectorдолжен иметь один и только один параметр (экземплярNSNotification).notificationNameИмя уведомления, для которого можно зарегистрировать наблюдателя; т.е. только уведомления с этим именем поставлены наблюдателю.
Если Вы передаете
nil, центр уведомления не использует имя уведомления, чтобы решить, поставить ли его наблюдателю.notificationSenderОбъект, уведомления которого наблюдатель хотят получить; т.е. только уведомления, отправленные этим отправителем, поставлены наблюдателю.
Если Вы передаете
nil, центр уведомления не использует отправителя уведомления, чтобы решить, поставить ли его наблюдателю.Обсуждение
Обязательно вызовите
removeObserver:name:object:преждеnotificationObserverили любой объект, указанный вaddObserver:selector:name:object:освобожден.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
-
Удаляет все записи, указывающие данного наблюдателя от таблицы отгрузки получателя.
Объявление
Swift
func removeObserver(_notificationObserver: AnyObject)Objective C
- (void)removeObserver:(id)notificationObserverПараметры
notificationObserverНаблюдатель для удаления. Не должен быть
nil.Обсуждение
Обязательно вызовите этот метод (или
removeObserver:name:object:) преждеnotificationObserverили любой объект, указанный вaddObserver:selector:name:object:освобожден.Вы не должны использовать этот метод для удаления всех наблюдателей из объекта, бывшего долгосрочным, потому что код может не быть единственными наблюдателями добавления кода, включающими объект.
Следующий пример иллюстрирует, как не зарегистрироваться
someObserverдля всех уведомлений, для которых это ранее зарегистрировалось. В этом безопасно выполнитьdeallocметод, но не должен иначе использоваться — использованиеremoveObserver:name:object:вместо этого.[[NSNotificationCenter defaultCenter] removeObserver:someObserver];
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
См. также
-
Удаляет соответствие записей из таблицы отгрузки получателя.
Объявление
Swift
func removeObserver(_notificationObserver: AnyObject, namenotificationName: String?, objectnotificationSender: AnyObject?)Objective C
- (void)removeObserver:(id)notificationObservername:(NSString *)notificationNameobject:(id)notificationSenderПараметры
notificationObserverНаблюдатель для удаления из таблицы отгрузки. Укажите наблюдателя для удаления только записей для этого наблюдателя. Не должен быть
nil, или сообщение не будет иметь никакого эффекта.notificationNameИмя уведомления для удаления из таблицы отгрузки. Укажите имя уведомления для удаления только записей, указывающих это имя уведомления. Когда
nil, получатель не использует имена уведомления в качестве критериев удаления.notificationSenderОтправитель для удаления из таблицы отгрузки. Укажите отправителя уведомления для удаления только записей, указывающих этого отправителя. Когда
nil, получатель не использует отправителей уведомления в качестве критериев удаления.Обсуждение
Обязательно вызовите этот метод (или
removeObserver:) перед объектом наблюдателя или любым объектом, указанным вaddObserver:selector:name:object:освобожден.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
См. также
-
Отправляет данное уведомление получателю.
Объявление
Swift
func postNotification(_notification: NSNotification)Objective C
- (void)postNotification:(NSNotification *)notificationПараметры
notificationУведомление сообщению. Это значение не должно быть
nil.Обсуждение
Можно создать уведомление с
NSNotificationметод классаnotificationWithName:object:илиnotificationWithName:object:userInfo:. Исключение повышено еслиnotificationnil.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
-
Создает уведомление с именем и отправителем и отправляет его на получатель.
Объявление
Swift
func postNotificationName(_notificationName: String, objectnotificationSender: AnyObject?)Objective C
- (void)postNotificationName:(NSString *)notificationNameobject:(id)notificationSenderПараметры
notificationNameИмя уведомления.
notificationSenderОбъект, отправляющий уведомление.
Обсуждение
Этот метод вызывает
postNotificationName:object:userInfo:с auserInfoпараметрnil.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
См. также
-
Создает уведомление с именем, отправителем и информацией и отправляет его на получатель.
Объявление
Swift
func postNotificationName(_notificationName: String, objectnotificationSender: AnyObject?, userInfouserInfo: [NSObject : AnyObject]?)Objective C
- (void)postNotificationName:(NSString *)notificationNameobject:(id)notificationSenderuserInfo:(NSDictionary *)userInfoПараметры
notificationNameИмя уведомления.
notificationSenderОбъект, отправляющий уведомление.
userInfoИнформация об уведомление. Может быть
nil.Обсуждение
Этот метод является предпочтительным методом для регистрации уведомлений.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
См. также
