Ссылка CFRunLoopSource
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Swift
import CoreFoundation
Objective C
@import CoreFoundation;
Объект 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
Доступность
Доступный в iOS 2.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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает параметр упорядочивания для объекта CFRunLoopSource.
Объявление
Swift
func CFRunLoopSourceGetOrder(_
source
: CFRunLoopSource!) -> CFIndexObjective C
CFIndex CFRunLoopSourceGetOrder ( CFRunLoopSourceRef source );
Параметры
source
Источник цикла выполнения для исследования.
Возвращаемое значение
Параметр упорядочивания для
source
, который цикл выполнения использует (только для источников версии 0) для определения порядка, в котором обрабатываются источники, когда стреляют многократные источники.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает идентификатор типа CFRunLoopSource непрозрачный тип.
Объявление
Swift
func CFRunLoopSourceGetTypeID() -> CFTypeID
Objective C
CFTypeID CFRunLoopSourceGetTypeID ( void );
Возвращаемое значение
Идентификатор типа для CFRunLoopSource непрозрачный тип.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в iOS 2.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
Доступность
Доступный в iOS 2.0 и позже.
-
Возвращает булево значение, указывающее, допустим ли объект CFRunLoopSource и в состоянии стрелять.
Объявление
Swift
func CFRunLoopSourceIsValid(_
source
: CFRunLoopSource!) -> BooleanObjective C
Boolean CFRunLoopSourceIsValid ( CFRunLoopSourceRef source );
Параметры
source
Источник цикла выполнения для исследования.
Возвращаемое значение
true
еслиsource
допустимо, иначеfalse
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в iOS 2.0 и позже.
-
Сигнализирует объект CFRunLoopSource, отмечая его как готовый стрелять.
Объявление
Swift
func CFRunLoopSourceSignal(_
source
: CFRunLoopSource!)Objective C
void CFRunLoopSourceSignal ( CFRunLoopSourceRef source );
Параметры
source
Источник цикла выполнения для сигнализации.
Обсуждение
Эта функция не имеет никакого эффекта на источники версии 1, автоматически обрабатывающиеся, когда сообщения Маха поступают для них. После сигнализации источника версии 0 необходимо вызвать
CFRunLoopWakeUp
на одном из циклов выполнения, в которых источник регистрируется для обрабатывания источника сразу.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в iOS 2.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)> init() init(version
version
: CFIndex, infoinfo
: UnsafeMutablePointer<Void>, retainretain
: CFunctionPointer<((UnsafePointer<Void>) -> UnsafePointer<Void>)>, releaserelease
: CFunctionPointer<((UnsafePointer<Void>) -> Void)>, copyDescriptioncopyDescription
: CFunctionPointer<((UnsafePointer<Void>) -> Unmanaged<CFString>!)>, equalequal
: CFunctionPointer<((UnsafePointer<Void>, UnsafePointer<Void>) -> Boolean)>, hashhash
: CFunctionPointer<((UnsafePointer<Void>) -> CFHashCode)>, scheduleschedule
: CFunctionPointer<((UnsafeMutablePointer<Void>, CFRunLoop!, CFString!) -> Void)>, cancelcancel
: CFunctionPointer<((UnsafeMutablePointer<Void>, CFRunLoop!, CFString!) -> Void)>, performperform
: 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
Выполнять обратный вызов для источника цикла выполнения. Когда источник стрелял, этот обратный вызов вызывают.
Доступность
Доступный в iOS 2.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>)> init() init(version
version
: CFIndex, infoinfo
: UnsafeMutablePointer<Void>, retainretain
: CFunctionPointer<((UnsafePointer<Void>) -> UnsafePointer<Void>)>, releaserelease
: CFunctionPointer<((UnsafePointer<Void>) -> Void)>, copyDescriptioncopyDescription
: CFunctionPointer<((UnsafePointer<Void>) -> Unmanaged<CFString>!)>, equalequal
: CFunctionPointer<((UnsafePointer<Void>, UnsafePointer<Void>) -> Boolean)>, hashhash
: CFunctionPointer<((UnsafePointer<Void>) -> CFHashCode)>, getPortgetPort
: CFunctionPointer<((UnsafeMutablePointer<Void>) -> mach_port_t)>, performperform
: 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
Выполнять обратный вызов для источника цикла выполнения. Когда источник стрелял, этот обратный вызов вызывают.
Доступность
Доступный в iOS 2.0 и позже.
-
Ссылка на исходный объект цикла выполнения.
Объявление
Swift
typealias CFRunLoopSourceRef = CFRunLoopSource
Objective C
typedef struct __CFRunLoopSource *CFRunLoopSourceRef;
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в iOS 2.0 и позже.