Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка платформы CoreFoundation ссылка CFNotificationCenter

Опции
Развертывание Target:

На этой странице
Язык:

Ссылка CFNotificationCenter

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

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

Для отправки уведомления Вы вызываете CFNotificationCenterPostNotification, передача в информации об уведомлении. Центр уведомления тогда ищет всех наблюдателей, зарегистрировавшихся для этого уведомления и отправляющих информацию об уведомлении в их функции обратного вызова.

Существует три типа CFNotificationCenter — распределенный центр уведомления, локальный центр уведомления, и Дарвинский центр уведомления — приложение может иметь самое большее один из каждого типа. Распределенное уведомление получено с CFNotificationCenterGetDistributedCenter. Распределенный центр уведомления поставляет уведомления между приложениями. В этом случае объект уведомления должен всегда быть объектом CFString, и словарь уведомления должен содержать только значения списка свойств. Локальная переменная и Дарвинские центры уведомления доступны в версии 10.4 OS X и позже, и полученное использование CFNotificationCenterGetLocalCenter и CFNotificationCenterGetDarwinNotifyCenter соответственно.

В отличие от некоторой другой Базовой Основы непрозрачные типы с именами, подобными Фундаментальному классу Какао (такими как CFString и NSString), объекты CFNotificationCenter не могут быть брошены (“бесплатный соединенный мостом”) к NSNotificationCenter объекты или наоборот.

Функции

  • Возвращает Дарвинский центр уведомления приложения.

    Объявление

    Swift

    func CFNotificationCenterGetDarwinNotifyCenter() -> CFNotificationCenter!

    Objective C

    CFNotificationCenterRef CFNotificationCenterGetDarwinNotifyCenter ( void );

    Возвращаемое значение

    Дарвинский центр уведомления приложения.

    Обсуждение

    Этот центр уведомления используется для покрытия <notify.h> Базовый механизм уведомления OS (см. /usr/include/notify.h). Приложение имеет только один Дарвинский центр уведомления, таким образом, эта функция возвращает то же значение каждый раз, когда это вызывают.

    Дарвин Уведомляет, что Центр не имеет никакого понятия сеансов в расчете на пользователя, все уведомления в масштабе всей системы. Как с распределенными уведомлениями, цикл выполнения основного потока должен работать в одном из общих режимов (обычно kCFRunLoopDefaultMode) для уведомлений дарвинского стиля, которые будут поставлены.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.4 и позже.

  • Возвращает распределенный центр уведомления приложения.

    Объявление

    Swift

    func CFNotificationCenterGetDistributedCenter() -> CFNotificationCenter!

    Objective C

    CFNotificationCenterRef CFNotificationCenterGetDistributedCenter ( void );

    Возвращаемое значение

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

    Обсуждение

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

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает локальный центр уведомления приложения.

    Объявление

    Swift

    func CFNotificationCenterGetLocalCenter() -> CFNotificationCenter!

    Objective C

    CFNotificationCenterRef CFNotificationCenterGetLocalCenter ( void );

    Возвращаемое значение

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

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.4 и позже.

  • Отправляет уведомление для объекта.

    Объявление

    Swift

    func CFNotificationCenterPostNotification(_ center: CFNotificationCenter!, _ name: CFString!, _ object: UnsafePointer<Void>, _ userInfo: CFDictionary!, _ deliverImmediately: Boolean)

    Objective C

    void CFNotificationCenterPostNotification ( CFNotificationCenterRef center, CFStringRef name, const void *object, CFDictionaryRef userInfo, Boolean deliverImmediately );

    Параметры

    center

    Центр уведомления для регистрации уведомления.

    name

    Имя уведомления сообщению. Это значение не должно быть NULL.

    object

    Объект, отправляющий уведомление. Если NULL, уведомление отправляется только наблюдателям, наблюдающим все объекты. Другими словами, только наблюдатели, зарегистрировавшиеся для уведомления в a NULL значение для object получит уведомление.

    Если Вы хотите позволить Вашим клиентам регистрироваться для уведомлений с помощью Какао APIs (см. Ссылку класса NSNotificationCenter), то object должен быть Базовый объект Основы или Какао.

    Для распределенных уведомлений, object должен быть объект CFString.

    Если center Дарвинский центр уведомления, это значение проигнорировано.

    userInfo

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

    Если center Дарвинский центр уведомления, это значение проигнорировано.

    deliverImmediately

    Если true, уведомление сразу поставлено всем наблюдателям, даже если некоторые наблюдатели находятся в приостановленных (фоновых) приложениях, и они запросили различное поведение приостановки при регистрации для уведомления. Если false, требуемое поведение приостановки каждого наблюдателя уважают.

    Если center Дарвинский центр уведомления, это значение проигнорировано.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

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

    Объявление

    Swift

    func CFNotificationCenterPostNotificationWithOptions(_ center: CFNotificationCenter!, _ name: CFString!, _ object: UnsafePointer<Void>, _ userInfo: CFDictionary!, _ options: CFOptionFlags)

    Objective C

    void CFNotificationCenterPostNotificationWithOptions ( CFNotificationCenterRef center, CFStringRef name, const void *object, CFDictionaryRef userInfo, CFOptionFlags options );

    Параметры

    center

    Центр уведомления для регистрации уведомления.

    name

    Имя уведомления сообщению. Это значение не должно быть NULL.

    object

    Объект, отправляющий уведомление. Если NULL, уведомление отправляется только наблюдателям, наблюдающим все объекты. Другими словами, только наблюдатели, зарегистрировавшиеся для уведомления в a NULL значение для object получит уведомление.

    Если Вы хотите позволить Вашим клиентам регистрироваться для уведомлений с помощью Какао APIs (см. Ссылку класса NSNotificationCenter), то object должен быть Базовый объект Основы или Какао.

    Для распределенных уведомлений, object должен быть объект CFString.

    Если center Дарвинский центр уведомления, это значение проигнорировано.

    userInfo

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

    Если center Дарвинский центр уведомления, это значение проигнорировано.

    options

    Указывает, должно ли уведомление быть сразу отправлено, или ко всем сеансам. См., что Уведомление Отправляет Опции для возможных значений.

    Если center Дарвинский центр уведомления, это значение проигнорировано.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.3 и позже.

  • Регистрирует наблюдателя для получения уведомлений.

    Объявление

    Swift

    func CFNotificationCenterAddObserver(_ center: CFNotificationCenter!, _ observer: UnsafePointer<Void>, _ callBack: CFNotificationCallback, _ name: CFString!, _ object: UnsafePointer<Void>, _ suspensionBehavior: CFNotificationSuspensionBehavior)

    Objective C

    void CFNotificationCenterAddObserver ( CFNotificationCenterRef center, const void *observer, CFNotificationCallback callBack, CFStringRef name, const void *object, CFNotificationSuspensionBehavior suspensionBehavior );

    Параметры

    center

    Центр уведомления, к которому можно добавить наблюдателя.

    observer

    Наблюдатель. В OS X v10.3 и позже, этот параметр может быть NULL.

    callBack

    Функция обратного вызова для вызова, когда object отправляет названное уведомление name.

    name

    Имя уведомления для наблюдения. Если NULL, callback вызывается для любого уведомления, отправленного object.

    Если center Дарвинский центр уведомления, это значение не должно быть NULL.

    object

    Объект наблюдать. Для распределенных уведомлений, object должен быть объект CFString. Если NULL, callback когда уведомление назвало, вызывается name отправляется любым объектом.

    Если center Дарвинский центр уведомления, это значение проигнорировано.

    suspensionBehavior

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

    Если center Дарвинский центр уведомления, это значение проигнорировано.

    Обсуждение

    Поставка уведомления регистрируется для основного потока.

    Если необходимо управлять, какой поток обрабатывает уведомление, функция обратного вызова должна быть в состоянии переслать уведомление к надлежащему потоку. Можно использовать a CFMessagePort возразите или пользовательское CFRunLoopSource объект отправить уведомления циклу выполнения корректного потока.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Мешает наблюдателю получить любые уведомления от любого объекта.

    Объявление

    Swift

    func CFNotificationCenterRemoveEveryObserver(_ center: CFNotificationCenter!, _ observer: UnsafePointer<Void>)

    Objective C

    void CFNotificationCenterRemoveEveryObserver ( CFNotificationCenterRef center, const void *observer );

    Параметры

    center

    Центр уведомления, из которого можно удалить наблюдателей.

    observer

    Наблюдатель. Это значение не должно быть NULL.

    Обсуждение

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

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Мешает наблюдателю получить определенные уведомления.

    Объявление

    Swift

    func CFNotificationCenterRemoveObserver(_ center: CFNotificationCenter!, _ observer: UnsafePointer<Void>, _ name: CFString!, _ object: UnsafePointer<Void>)

    Objective C

    void CFNotificationCenterRemoveObserver ( CFNotificationCenterRef center, const void *observer, CFStringRef name, const void *object );

    Параметры

    center

    Центр уведомления для изменения.

    observer

    Наблюдатель. Это значение не должно быть NULL.

    name

    Имя уведомления, чтобы прекратить наблюдать. Если NULL, observer остановки, получающие обратные вызовы для всех уведомлений, отправленных object.

    object

    Объект прекратить наблюдать. Для распределенных уведомлений, object должен быть объект CFString. Если NULL, observer остановки, получающие обратные вызовы для всех объектов, отправляющих уведомления, называют name.

    Если center Дарвинский центр уведомления, это значение проигнорировано.

    Обсуждение

    Если оба name и object NULL, эта функция нерегистры observer из всех уведомлений, для которых это ранее зарегистрировалось в center.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возвращает идентификатор типа для CFNotificationCenter непрозрачный тип.

    Объявление

    Swift

    func CFNotificationCenterGetTypeID() -> CFTypeID

    Objective C

    CFTypeID CFNotificationCenterGetTypeID ( void );

    Возвращаемое значение

    Идентификатор типа для CFNotificationCenter непрозрачный тип.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

Обратные вызовы

  • Когда уведомление отправляется, функция обратного вызова вызвала для каждого наблюдателя уведомления.

    Объявление

    Swift

    typealias CFNotificationCallback = CFunctionPointer<((CFNotificationCenter!, UnsafeMutablePointer<Void>, CFString!, UnsafePointer<Void>, CFDictionary!) -> Void)>

    Objective C

    typedef void (*CFNotificationCallback) ( CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo );

    Параметры

    center

    Центр уведомления обработка уведомления.

    observer

    Произвольное значение, кроме NULL, это идентифицирует наблюдателя.

    name

    Имя отправляемого уведомления.

    object

    Произвольное значение, идентифицирующее объект, отправляющий уведомление. Для распределенных уведомлений, object всегда объект CFString. Это значение могло быть NULL.

    userInfo

    Словарь, содержащий дополнительную информацию относительно уведомления. Это значение могло быть NULL.

    Если центр уведомления является Дарвинским центром уведомления, это значение должно быть проигнорировано.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

Типы данных

Прочие условия

  • Тип ссылки на CFNotificationCenter.

    Объявление

    Swift

    typealias CFNotificationCenterRef = CFNotificationCenter

    Objective C

    typedef struct *CFNotificationCenterRef;

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

Константы

Прочие условия

  • Флаги приостановки, указывающие, как распределенные уведомления должны быть обработаны, когда приложение получения в фоновом режиме.

    Объявление

    Swift

    enum CFNotificationSuspensionBehavior : CFIndex { case Drop case Coalesce case Hold case DeliverImmediately }

    Objective C

    enum CFNotificationSuspensionBehavior { CFNotificationSuspensionBehaviorDrop = 1, CFNotificationSuspensionBehaviorCoalesce = 2, CFNotificationSuspensionBehaviorHold = 3, CFNotificationSuspensionBehaviorDeliverImmediately = 4 }; typedef enum CFNotificationSuspensionBehavior CFNotificationSuspensionBehavior;

    Константы

    • Drop

      CFNotificationSuspensionBehaviorDrop

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

      Доступный в OS X v10.0 и позже.

    • Coalesce

      CFNotificationSuspensionBehaviorCoalesce

      Сервер только поставит последнее уведомление в очередь об указанном имени и объекте; отбрасываются более ранние уведомления.

      Доступный в OS X v10.0 и позже.

    • Hold

      CFNotificationSuspensionBehaviorHold

      Сервер будет содержать все уведомления соответствия, пока очередь не была переполнена (размер очереди, определенный сервером), в которой точке сервер может сбросить поставленные в очередь уведомления.

      Доступный в OS X v10.0 и позже.

    • DeliverImmediately

      CFNotificationSuspensionBehaviorDeliverImmediately

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

      Доступный в OS X v10.0 и позже.

    Обсуждение

    Приложение выбирает поведение приостановки для данного уведомления, когда это регистрирует наблюдателя для того уведомления с CFNotificationCenterAddObserver.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Возможные варианты при регистрации уведомлений.

    Объявление

    Swift

    var kCFNotificationDeliverImmediately: Int { get } var kCFNotificationPostToAllSessions: Int { get }

    Objective C

    enum { kCFNotificationDeliverImmediately = (1 << 0), kCFNotificationPostToAllSessions = (1 << 1) };

    Константы

    • kCFNotificationDeliverImmediately

      kCFNotificationDeliverImmediately

      Сразу поставляет уведомление.

      Доступный в OS X v10.3 и позже.

    • kCFNotificationPostToAllSessions

      kCFNotificationPostToAllSessions

      Поставляет уведомление всем сеансам.

      Доступный в OS X v10.3 и позже.

    Обсуждение

    Используйте эти константы при вызове CFNotificationCenterPostNotificationWithOptions функция.