Ссылка CFReadStream
CFReadStream обеспечивает интерфейс для чтения потока байтов или синхронно или асинхронно. Можно создать потоки, читающие байты из блока памяти, файла или универсального сокета. Все потоки должны быть открыты, с помощью CFReadStreamOpen, перед чтением.
Используйте CFWriteStream для записи потоков байтов. Платформа CFNetwork определяет дополнительный тип потока для чтения ответов на Запросы HTTP.
CFReadStream “бесплатный соединенный мостом” с его дубликатом Основы Какао, NSInputStream. Это означает, что Базовый тип Основы является взаимозаменяемым в вызовах функции или вызовах метода с соединенным мостом объектом Основы. Поэтому в методе, где Вы видите NSInputStream * параметр, можно передать в CFReadStreamRef, и в функции, где Вы видите параметр CFReadStreamRef, можно передать в NSInputStream экземпляр. Отметьте, однако, что у Вас могут быть или делегат или обратные вызовы, но не оба. Посмотрите Бесплатные Соединенные мостом Типы для получения дополнительной информации о бесплатном образовании моста.
-
Создает читаемый поток для блока памяти.
Объявление
Swift
func CFReadStreamCreateWithBytesNoCopy(_alloc: CFAllocator!, _bytes: UnsafePointer<UInt8>, _length: CFIndex, _bytesDeallocator: CFAllocator!) -> CFReadStream!Objective C
CFReadStreamRef CFReadStreamCreateWithBytesNoCopy ( CFAllocatorRef alloc, const UInt8 *bytes, CFIndex length, CFAllocatorRef bytesDeallocator );Параметры
allocСредство выделения для использования для выделения памяти для нового объекта. Передача
NULLилиkCFAllocatorDefaultиспользовать текущее средство выделения по умолчанию.bytesБуфер памяти для чтения. Эта память должна существовать для времени жизни нового потока.
lengthРазмер
bytes.bytesDeallocatorСредство выделения для использования для освобождения
bytesкогда освобожден поток. ПередачаkCFAllocatorNullпрепятствовать тому, чтобы поток освободилbytes.Возвращаемое значение
Новый поток чтения, или
NULLпри отказе. Владение соблюдает Создать Правило.Обсуждение
Необходимо открыть поток, с помощью CFReadStreamOpen, прежде, чем читать из него.
Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.1 и позже.
-
Создает читаемый поток для файла.
Объявление
Swift
func CFReadStreamCreateWithFile(_alloc: CFAllocator!, _fileURL: CFURL!) -> CFReadStream!Objective C
CFReadStreamRef CFReadStreamCreateWithFile ( CFAllocatorRef alloc, CFURLRef fileURL );Параметры
allocСредство выделения для использования для выделения памяти для нового объекта. Передача
NULLилиkCFAllocatorDefaultиспользовать текущее средство выделения по умолчанию.fileURLURL файла для чтения. URL должен использовать схему файла.
Возвращаемое значение
Новый читаемый потоковый объект, или
NULLпри отказе. Владение соблюдает Создать Правило.Обсуждение
Необходимо открыть поток, с помощью CFReadStreamOpen, прежде, чем читать из него.
Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.1 и позже.
-
Закрывает читаемый поток.
Объявление
Swift
func CFReadStreamClose(_stream: CFReadStream!)Objective C
void CFReadStreamClose ( CFReadStreamRef stream );Параметры
streamПоток для закрытия.
Обсуждение
Эта функция завершает поток байтов и выпускает любые системные ресурсы, требуемые потоком. Поток удален из любых циклов выполнения, в которых он был запланирован. После того, как закрытый, поток не может быть вновь открыт.
Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.1 и позже.
-
Открывает поток для чтения.
Объявление
Swift
func CFReadStreamOpen(_stream: CFReadStream!) -> BooleanObjective C
Boolean CFReadStreamOpen ( CFReadStreamRef stream );Параметры
streamПоток для открытия.
Возвращаемое значение
TRUEеслиstreamбыл успешно открыт,FALSEиначе. Еслиstreamне находится вkCFStreamStatusNotOpenсостояние, эта функция возвратыFALSE.Обсуждение
Открытие потока заставляет его резервировать все системные ресурсы, которых требуется. Если поток может открыться в фоновом режиме без блокирования, эта функция всегда возвращается
true. Для изучения, когда фоновая операция открытия завершается можно или запланировать поток в цикл выполнения сCFReadStreamScheduleWithRunLoopи ожидайте клиента потока (набор сCFReadStreamSetClient) чтобы быть уведомленными или можно опросить потоковое использованиеCFReadStreamGetStatus, ожидание состоянияkCFStreamStatusOpenилиkCFStreamStatusError.Вы не должны ожидать, пока поток не закончил открываться в фоновом режиме прежде, чем вызвать
CFReadStreamReadфункция. Операция чтения просто блокирует, пока открытое не завершилось.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.1 и позже.
-
Считывает данные из читаемого потока.
Объявление
Swift
func CFReadStreamRead(_stream: CFReadStream!, _buffer: UnsafeMutablePointer<UInt8>, _bufferLength: CFIndex) -> CFIndexObjective C
CFIndex CFReadStreamRead ( CFReadStreamRef stream, UInt8 *buffer, CFIndex bufferLength );Параметры
streamПоток, из которого можно читать.
bufferБуфер, в который можно поместить данные.
bufferLengthРазмер
bufferи максимальное количество байтов для чтения.Возвращаемое значение
Число байтов читало;
0если поток достиг своего конца; или-1если или поток не открыт или ошибка, происходит.Обсуждение
Если
streamнаходится в процессе открытия, эта функция ожидает, пока это не завершилось. Это функциональные блоки по крайней мере до одного байта доступно; это не блокирует доbufferзаполнено. Чтобы избежать блокировать, вызовите эту функцию только еслиCFReadStreamHasBytesAvailableвозвратыTRUEили после клиента потока (набор сCFReadStreamSetClient) уведомляется относительно akCFStreamEventHasBytesAvailableсобытие.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.1 и позже.
-
Планирует поток в цикл выполнения.
Объявление
Swift
func CFReadStreamScheduleWithRunLoop(_stream: CFReadStream!, _runLoop: CFRunLoop!, _runLoopMode: CFString!)Objective C
void CFReadStreamScheduleWithRunLoop ( CFReadStreamRef stream, CFRunLoopRef runLoop, CFStringRef runLoopMode );Параметры
streamПоток для планирования.
runLoopЦикл выполнения, с которым можно запланировать
stream.runLoopModeРежим цикла выполнения
runLoopв котором можно запланироватьstream.Обсуждение
После планирования
streamс циклом выполнения, его клиент (набор сCFReadStreamSetClient) уведомляется, когда различные события происходят с потоком, такой как тогда, когда он заканчивает открываться, когда он имеет байты в наличии, и когда происходит ошибка. Поток может быть запланирован с многократными циклами выполнения и выполненными режимами цикла. ИспользоватьCFReadStreamUnscheduleFromRunLoopпозже удалитьstreamот цикла выполнения.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.1 и позже.
-
Удаляет поток чтения из данного выполненного цикла.
Объявление
Swift
func CFReadStreamUnscheduleFromRunLoop(_stream: CFReadStream!, _runLoop: CFRunLoop!, _runLoopMode: CFString!)Objective C
void CFReadStreamUnscheduleFromRunLoop ( CFReadStreamRef stream, CFRunLoopRef runLoop, CFStringRef runLoopMode );Параметры
streamПоток, чтобы не запланировать.
runLoopЦикл выполнения, из которого можно удалить
stream.runLoopModeРежим цикла выполнения
runLoopиз которого можно удалитьstream.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.1 и позже.
-
Возвращает значение свойства для потока.
Объявление
Swift
func CFReadStreamCopyProperty(_stream: CFReadStream!, _propertyName: CFString!) -> AnyObject!Objective C
CFTypeRef CFReadStreamCopyProperty ( CFReadStreamRef stream, CFStringRef propertyName );Параметры
streamПоток для исследования.
propertyNameИмя потокового свойства для получения. Доступные свойства для стандартных Базовых потоков Основы перечислены в Ссылке CFStream.
Возвращаемое значение
Значение свойства
propertyName. Владение соблюдает Создать Правило.Обсуждение
Каждый тип потока может определить ряд свойств, что или описать или конфигурируют отдельные потоки. Свойство может быть любой информацией о потоке кроме фактических данных потоковые дескрипторы. Примеры включают заголовки от передачи HTTP, ожидаемого числа байтов, данных полномочий файла, и т.д. Использовать
CFReadStreamSetPropertyизменить значение свойства, несмотря на то, что некоторые свойства только для чтения.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.1 и позже.
-
Возвращает указатель на внутренний буфер потока непрочитанных данных, если это возможно.
Объявление
Swift
func CFReadStreamGetBuffer(_stream: CFReadStream!, _maxBytesToRead: CFIndex, _numBytesRead: UnsafeMutablePointer<CFIndex>) -> UnsafePointer<UInt8>Objective C
const UInt8 * CFReadStreamGetBuffer ( CFReadStreamRef stream, CFIndex maxBytesToRead, CFIndex *numBytesRead );Параметры
streamПоток для исследования.
maxBytesToReadМаксимальное количество байтов для чтения. Если больше, чем
0,maxBytesToReadограничивает число чтения байтов; если0или меньше, все доступные байты читаются.numBytesReadПо возврату, содержит длину возвращенного буфера. Если
streamне открыто или встретился с ошибкой,numBytesReadустановлен в-1.Возвращаемое значение
Указатель на внутренний буфер непрочитанных данных для
stream, если возможный;NULLиначе. Буфер хорош только, пока следующая операция с потоками не обратилась к потоку. Вы не должны ни изменять содержание возвращенного буфера, ни пытаться освободить буфер; это все еще принадлежит потоку. Байты, возвращенные в буфере, считают считанными из потока.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.1 и позже.
-
Возвращает ошибку, связанную с потоком.
Объявление
Swift
func CFReadStreamCopyError(_stream: CFReadStream!) -> CFError!Objective C
CFErrorRef CFReadStreamCopyError ( CFReadStreamRef stream );Параметры
streamПоток для исследования.
Возвращаемое значение
Объект CFError, описывающий текущую проблему с потоком, или
NULLесли нет никакой ошибки. Владение соблюдает Создать Правило.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.5 и позже.
-
Возвращает ошибочное состояние потока.
Использовать
CFReadStreamCopyErrorвместо этого.Объявление
Swift
func CFReadStreamGetError(_stream: CFReadStream!) -> CFStreamErrorObjective C
CFStreamError CFReadStreamGetError ( CFReadStreamRef stream );Параметры
streamПоток для исследования.
Возвращаемое значение
Ошибочное состояние
streamвозвращенный в aCFStreamErrorструктура.Ошибочное поле
0если не произошла никакая ошибка. Если ошибочное поле не0,domainполе содержит код, идентифицирующий домен в который значениеerrorполе должно быть интерпретировано.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.1 и позже.
-
Возвращает текущее состояние потока.
Объявление
Swift
func CFReadStreamGetStatus(_stream: CFReadStream!) -> CFStreamStatusObjective C
CFStreamStatus CFReadStreamGetStatus ( CFReadStreamRef stream );Параметры
streamПоток для исследования.
Возвращаемое значение
Текущее состояние
stream. ПосмотритеCFStreamStatusдля списка возможных состояний.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.1 и позже.
-
Возвращает булево значение, указывающее, имеет ли читаемый поток данные, которые могут быть считаны без блокирования.
Объявление
Swift
func CFReadStreamHasBytesAvailable(_stream: CFReadStream!) -> BooleanObjective C
Boolean CFReadStreamHasBytesAvailable ( CFReadStreamRef stream );Параметры
streamПоток для исследования.
Возвращаемое значение
TRUEесли данные могут быть считаны изstreamбез блокирования, иначеFALSE. Еслиstreamне может сказать, доступны ли данные, фактически не пытаясь считать данные, эта функция возвратыTRUE.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.1 и позже.
-
Присваивает клиент потоку, получающему обратные вызовы, когда определенные события имеют место.
Объявление
Swift
func CFReadStreamSetClient(_stream: CFReadStream!, _streamEvents: CFOptionFlags, _clientCB: CFReadStreamClientCallBack, _clientContext: UnsafeMutablePointer<CFStreamClientContext>) -> BooleanObjective C
Boolean CFReadStreamSetClient ( CFReadStreamRef stream, CFOptionFlags streamEvents, CFReadStreamClientCallBack clientCB, CFStreamClientContext *clientContext );Параметры
streamПоток для изменения.
streamEventsНабор событий, для которых клиент должен получить обратные вызовы. События перечислены в
CFStreamEventType. Если Вы передаетеkCFStreamEventNone, текущий клиент дляstreamудален.clientCBКлиентская функция обратного вызова, которую вызовут, когда одно из событий запросило в
streamEventsпроисходит. ЕслиNULL, текущий клиент дляstreamудален.clientContextСтруктура, содержащая контекстную информацию для потокового клиента. Функция копирует информацию из структуры, таким образом, память, которой указывают
clientContextне должен сохраняться вне вызова функции. ЕслиNULL, текущий клиент дляstreamудален.Возвращаемое значение
TRUEесли поток поддерживает асинхронное уведомление, иначеFALSE.Обсуждение
Чтобы избежать опрашивать и блокировать, можно зарегистрировать клиент для слушания об интересных событиях, происходящих на потоке. Только одному клиенту на поток разрешают; регистрация нового клиента заменяет предыдущий.
Как только Вы установили клиент, необходимо запланировать поток в использовании цикла выполнения
CFReadStreamScheduleWithRunLoopтак, чтобы клиент мог получить асинхронные уведомления. Можно запланировать каждый поток в многократных циклах выполнения (например, при использовании пула потоков). Это - ответственность вызывающей стороны гарантировать, что по крайней мере один из запланированных циклов выполнения выполняется, иначе обратный вызов нельзя вызвать.Несмотря на то, что все Базовые потоки Основы в настоящее время поддерживают асинхронное уведомление, будущие потоковые типы не могут. Если поток не поддерживает асинхронное уведомление, эта функция возвраты
false. Как правило, такие потоки никогда не блокируют для устройства I/O (например, потоковая память чтения) и не получают преимущества от асинхронного уведомления.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.1 и позже.
-
Устанавливает значение свойства для потока.
Объявление
Swift
func CFReadStreamSetProperty(_stream: CFReadStream!, _propertyName: CFString!, _propertyValue: AnyObject!) -> BooleanObjective C
Boolean CFReadStreamSetProperty ( CFReadStreamRef stream, CFStringRef propertyName, CFTypeRef propertyValue );Параметры
streamПоток для изменения.
propertyNameИмя свойства для установки. Доступные свойства для стандартных Базовых потоков Основы перечислены в Ссылке CFStream.
propertyValueЗначение, в которое можно установить свойство
propertyNameдляstream. Позволенный тип данных значения зависит от устанавливаемого свойства.Возвращаемое значение
TRUEеслиstreamраспознает и принимает данную пару значения свойства, иначеFALSE.Обсуждение
Каждый тип потока может определить ряд свойств, что или описать или конфигурируют отдельные потоки. Свойство может быть любой интересной информацией о потоке. Примеры включают заголовки от передачи HTTP, ожидаемого числа байтов, данных полномочий файла, и т.д. Свойства, которые могут быть установлены, конфигурируют поведение потока и могут быть модифицируемыми только в определенные времена, такой как, прежде чем был открыт поток. (Фактически, необходимо предположить, что можно установить свойства только прежде, чем открыть поток, если не указано иное.) Для чтения значения использования свойства
CFReadStreamCopyProperty, несмотря на то, что некоторые свойства только для записи.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.2 и позже.
-
Возвращает идентификатор типа
CFReadStreamнепрозрачный тип.Объявление
Swift
func CFReadStreamGetTypeID() -> CFTypeIDObjective C
CFTypeID CFReadStreamGetTypeID ( void );Возвращаемое значение
Идентификатор типа для
CFReadStreamнепрозрачный тип.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.1 и позже.
-
Когда определенные типы действия имеют место на читаемом потоке, обратный вызов вызвал.
Объявление
Swift
typealias CFReadStreamClientCallBack = CFunctionPointer<((CFReadStream!, CFStreamEventType, UnsafeMutablePointer<Void>) -> Void)>Objective C
typedef void (*CFReadStreamClientCallBack) ( CFReadStreamRef stream, CFStreamEventType eventType, void *clientCallBackInfo );Параметры
streamПоток, испытавший событие
eventType.eventTypeСобытие, заставившее обратный вызов быть вызванным. Возможные события перечислены в
CFStreamEventType.clientCallBackInfoinfoэлементCFStreamClientContextструктура, использовавшаяся при установке клиента дляstream.Обсуждение
Этот обратный вызов вызывают только для событий, которые требуют при установке клиента с
CFReadStreamSetClient.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Ссылка на читаемый потоковый объект.
Объявление
Swift
typealias CFReadStreamRef = CFReadStreamObjective C
typedef struct __CFReadStream *CFReadStreamRef;Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Структура, содержащая определенные с помощью программы данные и обратные вызовы, с которыми можно сконфигурировать клиентское поведение потока.
Объявление
Swift
struct CFStreamClientContext { var version: CFIndex var info: UnsafeMutablePointer<Void> var retain: CFunctionPointer<((UnsafeMutablePointer<Void>) -> UnsafeMutablePointer<Void>)> var release: CFunctionPointer<((UnsafeMutablePointer<Void>) -> Void)> var copyDescription: CFunctionPointer<((UnsafeMutablePointer<Void>) -> Unmanaged<CFString>!)> }Objective C
struct CFStreamClientContext { CFIndex version; void *info; CFAllocatorRetainCallBack retain; CFAllocatorReleaseCallBack release; CFAllocatorCopyDescriptionCallBack copyDescription; }; typedef struct CFStreamClientContext CFStreamClientContext;Поля
versionНомер версии структуры. Должен быть
0.infoПроизвольный указатель на определенные с помощью программы данные, которые могут быть связаны с клиентом. Этот указатель передается обратным вызовам, определенным в контексте и к клиентской функции обратного вызова
CFReadStreamClientCallBack.retainСохранить обратный вызов для Вашего определенного с помощью программы
infoуказатель. Может бытьNULL.releaseОбратный вызов выпуска для Вашего определенного с помощью программы
infoуказатель. Может бытьNULL.copyDescriptionОбратный вызов описания копии для Вашего определенного с помощью программы
infoуказатель. Может бытьNULL.Доступность
Доступный в OS X v10.0 и позже.
