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

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

Разработчик

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

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

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

Ссылка CFRunLoopSource

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

Входной исходный тип обычно определяет API для создания и работы на объектах типа, как будто это был отдельный объект от цикла выполнения, затем обеспечивает функцию для создания CFRunLoopSource для объекта. Источник цикла выполнения может тогда быть зарегистрирован в цикле выполнения и выступить в качестве посредника между циклом выполнения и фактическим входным исходным текстовым объектом. Примеры входных источников включают CFMachPort, CFMessagePort и CFSocket.

Существует две категории источников. Источники версии 0, так названные, потому что version поле их структуры контекста 0, управляются вручную приложением. То, когда источник готов стрелять, некоторая часть приложения, возможно кодировать на отдельном потоке, ожидающем события, должно вызвать CFRunLoopSourceSignal сказать цикл выполнения, что источник готов стрелять. Источник цикла выполнения для CFSocket в настоящее время реализуется как источник версии 0.

Источниками версии 1 управляют цикл выполнения и ядро. Когда источники готовы стрелять, эти источники используют порты Маха для сигнализации. Когда сообщение поступает в порт Маха источника, источник автоматически сообщен ядром. Когда источник запущен, содержание сообщения дано источнику для обработки. Источники цикла выполнения для CFMachPort и CFMessagePort в настоящее время реализуются как источники версии 1.

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

Источник цикла выполнения может быть зарегистрирован в многократных циклах выполнения и выполненных режимах цикла одновременно. Когда источник сообщен, какой бы ни выполненный цикл, который, оказывается, обнаруживает сигнал сначала, запустит источник. Добавление источника к циклам выполнения многократных потоков может использоваться для управления пулом потоков «работника», обрабатывающим дискретные наборы данных, такие как сообщения клиент-сервер по сети или записям в очереди заданий, заполненной потоком «менеджера». Когда сообщения поступают, или задания добавляются к очереди, источник сообщен, и случайный поток получает и обрабатывает запрос.

Функции

  • Создает объект CFRunLoopSource.

    Объявление

    Swift

    func CFRunLoopSourceCreate(_ allocator: CFAllocator!, _ order: CFIndex, _ context: UnsafeMutablePointer<CFRunLoopSourceContext>) -> CFRunLoopSource!

    Objective C

    CFRunLoopSourceRef CFRunLoopSourceCreate ( CFAllocatorRef allocator, CFIndex order, CFRunLoopSourceContext *context );

    Параметры

    allocator

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

    order

    Показатель приоритета, указывающий порядок, в котором обрабатываются выполненные источники цикла. Когда многократные источники цикла выполнения стреляют в единственную передачу через цикл выполнения, источники обрабатываются в увеличивающемся порядке этого параметра. Если цикл выполнения установлен обработать только один источник на цикл, только самый высокий приоритетный источник, тот с самым низким order оцените, обрабатывается. Это значение проигнорировано для источников версии 1. Передайте 0, если нет причина сделать иначе.

    context

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

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

    Новый объект CFRunLoopSource. Вы ответственны за выпуск этого объекта.

    Обсуждение

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

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

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

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

  • Возвращает контекстную информацию для объекта CFRunLoopSource.

    Объявление

    Swift

    func CFRunLoopSourceGetContext(_ source: CFRunLoopSource!, _ context: UnsafeMutablePointer<CFRunLoopSourceContext>)

    Objective C

    void CFRunLoopSourceGetContext ( CFRunLoopSourceRef source, CFRunLoopSourceContext *context );

    Параметры

    source

    Источник цикла выполнения для исследования.

    context

    Указатель тот, на структуру, в который контекстная информация для source должен быть скопирован. Возвращаемой информацией является та же информация, переданная CFRunLoopSourceCreate при создании source.

    Обсуждение

    Выполненные источники цикла прибывают в две версии с разного размера структурами контекста. context должен указать на правильную версию структуры для source. Прежде, чем вызвать эту функцию, необходимо инициализировать version элемент context с номером версии (или 0 или 1) source.

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

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

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

  • Возвращает параметр упорядочивания для объекта CFRunLoopSource.

    Объявление

    Swift

    func CFRunLoopSourceGetOrder(_ source: CFRunLoopSource!) -> CFIndex

    Objective C

    CFIndex CFRunLoopSourceGetOrder ( CFRunLoopSourceRef source );

    Параметры

    source

    Источник цикла выполнения для исследования.

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

    Параметр упорядочивания для source, который цикл выполнения использует (только для источников версии 0) для определения порядка, в котором обрабатываются источники, когда стреляют многократные источники.

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

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

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

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

    Объявление

    Swift

    func CFRunLoopSourceGetTypeID() -> CFTypeID

    Objective C

    CFTypeID CFRunLoopSourceGetTypeID ( void );

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

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

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

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

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

  • Лишает законной силы объект CFRunLoopSource, останавливая его от когда-либо увольнения снова.

    Объявление

    Swift

    func CFRunLoopSourceInvalidate(_ source: CFRunLoopSource!)

    Objective C

    void CFRunLoopSourceInvalidate ( CFRunLoopSourceRef source );

    Параметры

    source

    Источник цикла выполнения для лишения законной силы.

    Обсуждение

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

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

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

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

  • Возвращает булево значение, указывающее, допустим ли объект CFRunLoopSource и в состоянии стрелять.

    Объявление

    Swift

    func CFRunLoopSourceIsValid(_ source: CFRunLoopSource!) -> Boolean

    Objective C

    Boolean CFRunLoopSourceIsValid ( CFRunLoopSourceRef source );

    Параметры

    source

    Источник цикла выполнения для исследования.

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

    true если source допустимо, иначе false.

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

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

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

  • Сигнализирует объект CFRunLoopSource, отмечая его как готовый стрелять.

    Объявление

    Swift

    func CFRunLoopSourceSignal(_ source: CFRunLoopSource!)

    Objective C

    void CFRunLoopSourceSignal ( CFRunLoopSourceRef source );

    Параметры

    source

    Источник цикла выполнения для сигнализации.

    Обсуждение

    Эта функция не имеет никакого эффекта на источники версии 1, автоматически обрабатывающиеся, когда сообщения Маха поступают для них. После сигнализации источника версии 0 необходимо вызвать CFRunLoopWakeUp на одном из циклов выполнения, в которых источник регистрируется для обрабатывания источника сразу.

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

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

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

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

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

    Объявление

    Objective C

    typedef void (*CFRunLoopCancelCallBack) ( void *info, CFRunLoopRef rl, CFStringRef mode );

    Параметры

    info

    info элемент CFRunLoopSourceContext структура, использовавшаяся при создании источника цикла выполнения.

    rl

    Цикл выполнения, из которого удаляется источник цикла выполнения.

    mode

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

    Обсуждение

    Вы указываете этот обратный вызов в CFRunLoopSourceContext структура при создании источника цикла выполнения.

  • Обратный вызов, вызванный для тестирования двух объектов CFRunLoopSource на равенство.

    Объявление

    Objective C

    typedef Boolean (*CFRunLoopEqualCallBack) ( const void *info1, const void *info2 );

    Параметры

    info1

    info элемент CFRunLoopSourceContext или CFRunLoopSourceContext1 структура, использовавшаяся при создании источника цикла первого показа для тестирования.

    info2

    info элемент CFRunLoopSourceContext или CFRunLoopSourceContext1 структура, использовавшаяся при создании второго источника цикла выполнения для тестирования.

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

    true если info1 и info2 должен считаться равным; иначе false.

    Обсуждение

    Вы указываете этот обратный вызов в CFRunLoopSourceContext или CFRunLoopSourceContext1 структура при создании источника цикла выполнения.

  • Обратный вызов, вызванный для получения порта собственного компонента Маха, представленного версией 1 объект CFRunLoopSource.

    Объявление

    Objective C

    typedef mach_port_t (*CFRunLoopGetPortCallBack) ( void *info );

    Параметры

    info

    info элемент CFRunLoopSourceContext1 структура, использовавшаяся при создании источника цикла выполнения.

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

    Порт собственного компонента Маха для источника цикла выполнения.

    Обсуждение

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

    Версия 1 работает, источник цикла должен иметь непосредственное отношение между собой и его портом Маха. Каждый источник должен иметь только один порт Маха, связанный с ним, и каждый порт Маха должен представлять только один источник.

    Вы указываете этот обратный вызов в CFRunLoopSourceContext1 структура при создании источника цикла выполнения.

  • Обратный вызов, вызванный для вычислений хэш-кода для info указатель объекта CFRunLoopSource.

    Объявление

    Objective C

    typedef CFHashCode (*CFRunLoopHashCallBack) ( const void *info );

    Параметры

    info

    info элемент CFRunLoopSourceContext или CFRunLoopSourceContext1 структура, использовавшаяся при создании источника цикла выполнения.

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

    Значение хэш-кода для info.

    Обсуждение

    Если обратный вызов хеша не предоставлен для источника, info указатель используется.

    Вы указываете этот обратный вызов в CFRunLoopSourceContext или CFRunLoopSourceContext1 структура при создании источника цикла выполнения.

  • Обратный вызов, вызванный, чтобы обработать и дополнительно ответить на сообщение, полученное на версии 1 объекту CFRunLoopSource (Мах основанные на порте источники).

    Объявление

    Objective C

    typedef void *(*CFRunLoopMachPerformCallBack) ( void *msg, CFIndex size, CFAllocatorRef allocator, void *info );

    Параметры

    msg

    Сообщение Маха получено на порту Маха. Указатель к a mach_msg_header_t структура. Метка конца формата версии 0 (mach_msg_format_0_trailer_t) в конце сообщения Маха.

    size

    Размер Маха обменивается сообщениями в msg, исключая метку конца сообщения.

    allocator

    Объект-распределитель, который должен использоваться для выделения ответного сообщения.

    info

    info элемент CFRunLoopSourceContext1 структура, использовавшаяся при создании источника цикла выполнения.

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

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

    Обсуждение

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

    Вы указываете этот обратный вызов в CFRunLoopSourceContext1 структура при создании источника цикла выполнения.

  • Когда сообщение получено на версии 0 объект CFRunLoopSource, обратный вызов вызвал.

    Объявление

    Objective C

    typedef void (*CFRunLoopPerformCallBack) ( void *info );

    Параметры

    info

    info элемент CFRunLoopSourceContext структура, использовавшаяся при создании источника цикла выполнения.

    Обсуждение

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

    Вы указываете этот обратный вызов в CFRunLoopSourceContext структура при создании источника цикла выполнения.

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

    Объявление

    Objective C

    typedef void (*CFRunLoopScheduleCallBack) ( void *info, CFRunLoopRef rl, CFStringRef mode );

    Параметры

    info

    info элемент CFRunLoopSourceContext структура, использовавшаяся при создании источника цикла выполнения.

    rl

    Цикл выполнения, в котором планируется источник.

    mode

    Режим цикла выполнения, в котором планируется источник.

    Обсуждение

    Вы указываете этот обратный вызов в CFRunLoopSourceContext структура при создании источника цикла выполнения.

Типы данных

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

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

    Объявление

    Swift

    struct CFRunLoopSourceContext { var version: CFIndex var info: UnsafeMutablePointer<Void> var retain: CFunctionPointer<((UnsafePointer<Void>) -> UnsafePointer<Void>)> var release: CFunctionPointer<((UnsafePointer<Void>) -> Void)> var copyDescription: CFunctionPointer<((UnsafePointer<Void>) -> Unmanaged<CFString>!)> var equal: CFunctionPointer<((UnsafePointer<Void>, UnsafePointer<Void>) -> Boolean)> var hash: CFunctionPointer<((UnsafePointer<Void>) -> CFHashCode)> var schedule: CFunctionPointer<((UnsafeMutablePointer<Void>, CFRunLoop!, CFString!) -> Void)> var cancel: CFunctionPointer<((UnsafeMutablePointer<Void>, CFRunLoop!, CFString!) -> Void)> var perform: CFunctionPointer<((UnsafeMutablePointer<Void>) -> Void)> }

    Objective C

    struct CFRunLoopSourceContext { CFIndex version; void *info; CFAllocatorRetainCallBack retain; CFAllocatorReleaseCallBack release; CFAllocatorCopyDescriptionCallBack copyDescription; CFRunLoopEqualCallBack equal; CFRunLoopHashCallBack hash; CFRunLoopScheduleCallBack schedule; CFRunLoopCancelCallBack cancel; CFRunLoopPerformCallBack perform; }; typedef struct CFRunLoopSourceContext CFRunLoopSourceContext;

    Поля

    version

    Номер версии структуры. Должен быть 0.

    info

    Произвольный указатель на определенные с помощью программы данные, которые могут быть связаны с CFRunLoopSource во время создания. Этот указатель передается всем обратным вызовам, определенным в контексте.

    retain

    Сохранить обратный вызов для Вашего определенного с помощью программы info указатель. Может быть NULL.

    release

    Обратный вызов выпуска для Вашего определенного с помощью программы info указатель. Может быть NULL.

    copyDescription

    Обратный вызов описания копии для Вашего определенного с помощью программы info указатель. Может быть NULL.

    equal

    Тестовый обратный вызов равенства для Вашего определенного с помощью программы info указатель. Может быть NULL.

    hash

    Обратный вызов вычисления хеша для Вашего определенного с помощью программы info указатель. Может быть NULL.

    schedule

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

    cancel

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

    perform

    Выполнять обратный вызов для источника цикла выполнения. Когда источник стрелял, этот обратный вызов вызывают.

    Доступность

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

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

    Объявление

    Swift

    struct CFRunLoopSourceContext1 { var version: CFIndex var info: UnsafeMutablePointer<Void> var retain: CFunctionPointer<((UnsafePointer<Void>) -> UnsafePointer<Void>)> var release: CFunctionPointer<((UnsafePointer<Void>) -> Void)> var copyDescription: CFunctionPointer<((UnsafePointer<Void>) -> Unmanaged<CFString>!)> var equal: CFunctionPointer<((UnsafePointer<Void>, UnsafePointer<Void>) -> Boolean)> var hash: CFunctionPointer<((UnsafePointer<Void>) -> CFHashCode)> var getPort: CFunctionPointer<((UnsafeMutablePointer<Void>) -> mach_port_t)> var perform: CFunctionPointer<((UnsafeMutablePointer<Void>, CFIndex, CFAllocator!, UnsafeMutablePointer<Void>) -> UnsafeMutablePointer<Void>)> }

    Objective C

    struct CFRunLoopSourceContext1 { CFIndex version; void *info; CFAllocatorRetainCallBack retain; CFAllocatorReleaseCallBack release; CFAllocatorCopyDescriptionCallBack copyDescription; CFRunLoopEqualCallBack equal; CFRunLoopHashCallBack hash; CFRunLoopGetPortCallBack getPort; CFRunLoopMachPerformCallBack perform; }; typedef struct CFRunLoopSourceContext1 CFRunLoopSourceContext1;

    Поля

    version

    Номер версии структуры. Должен быть 1.

    info

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

    retain

    Сохранить обратный вызов для Вашего определенного с помощью программы info указатель. Может быть NULL.

    release

    Обратный вызов выпуска для Вашего определенного с помощью программы info указатель. Может быть NULL.

    copyDescription

    Обратный вызов описания копии для Вашего определенного с помощью программы info указатель. Может быть NULL.

    equal

    Тестовый обратный вызов равенства для Вашего определенного с помощью программы info указатель. Может быть NULL.

    hash

    Обратный вызов вычисления хеша для Вашего определенного с помощью программы info указатель. Может быть NULL.

    getPort

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

    perform

    Выполнять обратный вызов для источника цикла выполнения. Когда источник стрелял, этот обратный вызов вызывают.

    Доступность

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

  • Ссылка на исходный объект цикла выполнения.

    Объявление

    Swift

    typealias CFRunLoopSourceRef = CFRunLoopSource

    Objective C

    typedef struct __CFRunLoopSource *CFRunLoopSourceRef;

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

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

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