Ссылка CFWriteStream
CFWriteStream
обеспечивает интерфейс для записи потока байтов или синхронно или асинхронно. Можно создать потоки, пишущие байты в блок памяти, файла или универсального сокета. Все потоки должны быть открыты, с помощью CFWriteStreamOpen, перед записью.
Используйте CFReadStream для чтения потоков байтов, и для функций, такой как CFStreamCreatePairWithSocketToHost
, это создает потоки сокета).
CFWriteStream
“бесплатный соединенный мостом” с его дубликатом Основы Какао, NSOutputStream. Это означает, что Базовый тип Основы является взаимозаменяемым в вызовах функции или вызовах метода с соединенным мостом объектом Основы. Поэтому в методе, где Вы видите NSOutputStream *
параметр, можно передать в a CFWriteStreamRef
, и в функции, где Вы видите a CFWriteStreamRef
параметр, можно передать в NSOutputStream
экземпляр. Отметьте, однако, что у Вас могут быть или делегат или обратные вызовы, но не оба. Посмотрите Бесплатные Соединенные мостом Типы для получения дополнительной информации о бесплатном образовании моста.
-
Создает перезаписываемый поток для growable блока памяти.
Объявление
Swift
func CFWriteStreamCreateWithAllocatedBuffers(_
alloc
: CFAllocator!, _bufferAllocator
: CFAllocator!) -> CFWriteStream!Objective C
CFWriteStreamRef CFWriteStreamCreateWithAllocatedBuffers ( CFAllocatorRef alloc, CFAllocatorRef bufferAllocator );
Параметры
alloc
Средство выделения для использования для выделения памяти для нового объекта. Передача
NULL
илиkCFAllocatorDefault
использовать текущее средство выделения по умолчанию.bufferAllocator
Средство выделения для использования для выделения памяти для буферов памяти потока. Передача
NULL
илиkCFAllocatorDefault
использовать текущее средство выделения по умолчанию.Возвращаемое значение
Новый поток записи. Владение соблюдает Создать Правило.
Обсуждение
Новые буферы выделяются с помощью
bufferAllocator
поскольку байты записаны в поток. В любой точке можно восстановить байты, к настоящему времени записанные путем выяснения свойствоkCFStreamPropertyDataWritten
сCFWriteStreamCopyProperty
.Необходимо открыть поток, с помощью CFWriteStreamOpen, прежде, чем записать в него.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.1 и позже.
-
Создает перезаписываемый поток для блока фиксированного размера памяти.
Объявление
Swift
func CFWriteStreamCreateWithBuffer(_
alloc
: CFAllocator!, _buffer
: UnsafeMutablePointer<UInt8>, _bufferCapacity
: CFIndex) -> CFWriteStream!Objective C
CFWriteStreamRef CFWriteStreamCreateWithBuffer ( CFAllocatorRef alloc, UInt8 *buffer, CFIndex bufferCapacity );
Параметры
alloc
Средство выделения для использования для выделения памяти для нового объекта. Передача
NULL
илиkCFAllocatorDefault
использовать текущее средство выделения по умолчанию.buffer
Буфер памяти, в который можно записать данные. Этот буфер должен существовать для времени жизни потока.
bufferCapacity
Размер
buffer
и максимальное количество байтов, которые могут быть записаны.Возвращаемое значение
Новый поток записи, или
NULL
при отказе. Владение соблюдает Создать Правило.Обсуждение
Когда
buffer
заполнено после записиbufferCapacity
байты, поток исчерпывается, и его состояние становитсяkCFStreamStatusAtEnd
.Необходимо открыть поток, с помощью CFWriteStreamOpen, прежде, чем записать в него.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.1 и позже.
-
Создает перезаписываемый поток для файла.
Объявление
Swift
func CFWriteStreamCreateWithFile(_
alloc
: CFAllocator!, _fileURL
: CFURL!) -> CFWriteStream!Objective C
CFWriteStreamRef CFWriteStreamCreateWithFile ( CFAllocatorRef alloc, CFURLRef fileURL );
Параметры
alloc
Средство выделения для использования для выделения памяти для нового объекта. Передача
NULL
илиkCFAllocatorDefault
использовать текущее средство выделения по умолчанию.fileURL
URL файла, в который можно записать. URL должен использовать схему файла.
Возвращаемое значение
Новый поток записи, или
NULL
при отказе. Владение соблюдает Создать Правило.Обсуждение
Поток перезаписывает существующий файл, если Вы не устанавливаете
kCFStreamPropertyAppendToFile
кkCFBooleanTrue
сCFWriteStreamSetProperty
, когда поток добавляет данные к файлу.Необходимо открыть поток, с помощью CFWriteStreamOpen, прежде, чем записать в него.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.1 и позже.
-
Закрывает перезаписываемый поток.
Объявление
Swift
func CFWriteStreamClose(_
stream
: CFWriteStream!)Objective C
void CFWriteStreamClose ( CFWriteStreamRef stream );
Параметры
stream
Поток для закрытия.
Обсуждение
Эта функция завершает поток байтов и выпускает любые системные ресурсы, требуемые потоком. Поток удален из любых циклов выполнения, в которых он был запланирован. После того, как закрытый, поток не может быть вновь открыт.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.1 и позже.
-
Открывает поток для записи.
Объявление
Swift
func CFWriteStreamOpen(_
stream
: CFWriteStream!) -> BooleanObjective C
Boolean CFWriteStreamOpen ( CFWriteStreamRef stream );
Параметры
stream
Поток для открытия.
Возвращаемое значение
true
еслиstream
был успешно открыт,false
иначе. Еслиstream
не находится вkCFStreamStatusNotOpen
состояние, эта функция возвратыfalse
.Обсуждение
Открытие потока заставляет его резервировать все системные ресурсы, которых требуется. Если поток может открыться в фоновом режиме без блокирования, эта функция всегда возвращается
true
. Для изучения, когда фоновая операция открытия завершается можно или запланировать поток в цикл выполнения сCFWriteStreamScheduleWithRunLoop
и ожидайте клиента потока (набор сCFWriteStreamSetClient
) чтобы быть уведомленными или можно опросить потоковое использованиеCFWriteStreamGetStatus
, ожидание состоянияkCFStreamStatusOpen
илиkCFStreamStatusError
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.1 и позже.
-
Данные записей к перезаписываемому потоку.
Объявление
Swift
func CFWriteStreamWrite(_
stream
: CFWriteStream!, _buffer
: UnsafePointer<UInt8>, _bufferLength
: CFIndex) -> CFIndexObjective C
CFIndex CFWriteStreamWrite ( CFWriteStreamRef stream, const UInt8 *buffer, CFIndex bufferLength );
Параметры
stream
Поток, в который можно записать.
buffer
Буфер, содержащий данные для записи.
bufferLength
Число байтов от
buffer
записать.Возвращаемое значение
Число байтов, успешно записанных,
0
если поток был наполнен до отказа (для потоков фиксированной длины), или-1
если или поток не открыт или ошибка, происходит.Обсуждение
Если
stream
находится в процессе открытия, эта функция ожидает, пока это не завершилось. Если поток не полон, этот вызов блоки, пока не записан по крайней мере один байт; это не блокирует до всех байтов вbuffer
записан. Чтобы избежать блокировать, вызовите эту функцию только еслиCFWriteStreamCanAcceptBytes
возвратыtrue
или после клиента потока (набор сCFWriteStreamSetClient
) уведомляется относительно akCFStreamEventCanAcceptBytes
событие.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.1 и позже.
-
Планирует поток в цикл выполнения.
Объявление
Swift
func CFWriteStreamScheduleWithRunLoop(_
stream
: CFWriteStream!, _runLoop
: CFRunLoop!, _runLoopMode
: CFString!)Objective C
void CFWriteStreamScheduleWithRunLoop ( CFWriteStreamRef stream, CFRunLoopRef runLoop, CFStringRef runLoopMode );
Параметры
stream
Поток для планирования.
runLoop
Цикл выполнения, в котором можно запланировать
stream
.runLoopMode
Режим цикла выполнения
runLoop
в котором можно запланироватьstream
.Обсуждение
После планирования
stream
в цикл выполнения, его клиент (набор сCFWriteStreamSetClient
) уведомляется, когда различные события происходят с потоком, такой как тогда, когда он заканчивает открываться, когда он может принять новые байты, и когда происходит ошибка. Поток может быть запланирован в многократные циклы выполнения и выполненные режимы цикла. ИспользоватьCFWriteStreamUnscheduleFromRunLoop
позже удалитьstream
от цикла выполнения.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.1 и позже.
-
Удаляет поток из определенного цикла выполнения.
Объявление
Swift
func CFWriteStreamUnscheduleFromRunLoop(_
stream
: CFWriteStream!, _runLoop
: CFRunLoop!, _runLoopMode
: CFString!)Objective C
void CFWriteStreamUnscheduleFromRunLoop ( CFWriteStreamRef stream, CFRunLoopRef runLoop, CFStringRef runLoopMode );
Параметры
stream
Поток для удаления.
runLoop
Цикл выполнения, из которого можно удалить
stream
.runLoopMode
Режим цикла выполнения
runLoop
из которого можно удалитьstream
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.1 и позже.
-
Возвраты, может ли перезаписываемый поток принять новые данные без блокирования.
Объявление
Swift
func CFWriteStreamCanAcceptBytes(_
stream
: CFWriteStream!) -> BooleanObjective C
Boolean CFWriteStreamCanAcceptBytes ( CFWriteStreamRef stream );
Параметры
stream
Поток для исследования.
Возвращаемое значение
true
если данные могут быть записаны вstream
без блокирования,false
иначе. Еслиstream
не может сказать, могут ли данные быть записаны, фактически не пытаясь записать данные, эта функция возвратыtrue
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.1 и позже.
-
Возвращает значение свойства для потока.
Объявление
Swift
func CFWriteStreamCopyProperty(_
stream
: CFWriteStream!, _propertyName
: CFString!) -> AnyObject!Objective C
CFTypeRef CFWriteStreamCopyProperty ( CFWriteStreamRef stream, CFStringRef propertyName );
Параметры
stream
Поток для исследования.
propertyName
Имя потокового свойства для получения. Доступные свойства для стандартных Базовых потоков Основы перечислены в Потоковых Свойствах.
Возвращаемое значение
Значение свойства
propertyName
. Владение соблюдает Создать Правило.Обсуждение
Каждый тип потока может определить ряд свойств, что или описать или конфигурируют отдельные потоки. Свойство может быть любой интересной информацией о потоке. Примеры включают заголовки от передачи HTTP, ожидаемого числа байтов, данных полномочий файла, и т.д. Использовать
CFWriteStreamSetProperty
изменить значение свойства, несмотря на то, что некоторые свойства только для чтения.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.1 и позже.
-
Возвращает ошибку, связанную с потоком.
Объявление
Swift
func CFWriteStreamCopyError(_
stream
: CFWriteStream!) -> CFError!Objective C
CFErrorRef CFWriteStreamCopyError ( CFWriteStreamRef stream );
Параметры
stream
Поток для исследования.
Возвращаемое значение
Объект CFError, описывающий текущую проблему с потоком, или
NULL
если нет никакой ошибки. Владение соблюдает Создать Правило.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает ошибочное состояние потока.
Использовать
CFWriteStreamCopyError
вместо этого.Объявление
Swift
func CFWriteStreamGetError(_
stream
: CFWriteStream!) -> CFStreamErrorObjective C
CFStreamError CFWriteStreamGetError ( CFWriteStreamRef stream );
Параметры
stream
Поток для исследования.
Возвращаемое значение
Ошибочное состояние
stream
возвращенный в aCFStreamError
структура.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.1 и позже.
-
Возвращает текущее состояние потока.
Объявление
Swift
func CFWriteStreamGetStatus(_
stream
: CFWriteStream!) -> CFStreamStatusObjective C
CFStreamStatus CFWriteStreamGetStatus ( CFWriteStreamRef stream );
Параметры
stream
Поток для исследования.
Возвращаемое значение
Текущее состояние
stream
. ПосмотритеCFStreamStatus
для списка возможных состояний.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.1 и позже.
-
Присваивает клиент потоку, получающему обратные вызовы, когда определенные события имеют место.
Объявление
Swift
func CFWriteStreamSetClient(_
stream
: CFWriteStream!, _streamEvents
: CFOptionFlags, _clientCB
: CFWriteStreamClientCallBack, _clientContext
: UnsafeMutablePointer<CFStreamClientContext>) -> BooleanObjective C
Boolean CFWriteStreamSetClient ( CFWriteStreamRef stream, CFOptionFlags streamEvents, CFWriteStreamClientCallBack clientCB, CFStreamClientContext *clientContext );
Параметры
stream
Поток для изменения.
streamEvents
Набор событий, для которых клиент должен получить обратные вызовы. События перечислены в
CFStreamEventType
. Если Вы передаетеkCFStreamEventNone
, текущий клиент дляstream
удален.clientCB
Клиентская функция обратного вызова для вызова, когда одно из событий запросило в
streamEvents
происходит. ЕслиNULL
, текущий клиент дляstream
удален.clientContext
Структура, содержащая контекстную информацию для потокового клиента. Функция копирует информацию из структуры, таким образом, память, которой указывают
clientContext
не должен сохраняться вне вызова функции. ЕслиNULL
, текущий клиент дляstream
удален.Возвращаемое значение
true
если поток поддерживает асинхронное уведомление,false
иначе.Обсуждение
Чтобы избежать опрашивать и блокировать, можно зарегистрировать клиент для слушания об интересных событиях, происходящих на потоке. Только одному клиенту на поток разрешают; регистрация нового клиента заменяет предыдущий.
Как только Вы установили клиент, необходимо запланировать поток в использовании цикла выполнения
CFWriteStreamScheduleWithRunLoop
так, чтобы клиент мог получить асинхронные уведомления. Можно запланировать каждый поток в многократных циклах выполнения (например, при использовании пула потоков). Это - ответственность вызывающей стороны гарантировать, что по крайней мере один из запланированных циклов выполнения выполняется, иначе обратный вызов нельзя вызвать.Несмотря на то, что все Базовые потоки Основы в настоящее время поддерживают асинхронное уведомление, будущие потоковые типы не могут. Если поток не поддерживает асинхронное уведомление, эта функция возвраты
false
. Как правило, такие потоки никогда не блокируют для устройства I/O (например, поток, пишущий в память), и не получают преимущества от асинхронного уведомления.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.1 и позже.
-
Устанавливает значение свойства для потока.
Объявление
Swift
func CFWriteStreamSetProperty(_
stream
: CFWriteStream!, _propertyName
: CFString!, _propertyValue
: AnyObject!) -> BooleanObjective C
Boolean CFWriteStreamSetProperty ( CFWriteStreamRef stream, CFStringRef propertyName, CFTypeRef propertyValue );
Параметры
stream
Поток для изменения.
propertyName
Имя свойства для установки. Доступные свойства для стандартных Базовых потоков Основы перечислены в Потоковых Свойствах.
propertyValue
Значение, в которое можно установить свойство
propertyName
дляstream
. Позволенный тип данных значения зависит от устанавливаемого свойства.Возвращаемое значение
true
еслиstream
распознает и принимает данную пару значения свойства,false
иначе.Обсуждение
Каждый тип потока может определить ряд свойств, что или описать или конфигурируют отдельные потоки. Свойство может быть любой интересной информацией о потоке. Примеры включают заголовки от передачи HTTP, ожидаемого числа байтов, данных полномочий файла, и т.д. Свойства, которые могут быть установлены, конфигурируют поведение потока и могут быть модифицируемыми только в определенные времена, такой как, прежде чем был открыт поток. (Фактически, необходимо предположить, что можно установить свойства только прежде, чем открыть поток, если не указано иное.) Для чтения значения использования свойства
CFWriteStreamCopyProperty
, несмотря на то, что некоторые свойства только для записи.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.2 и позже.
-
Возвращает идентификатор типа всех объектов CFWriteStream.
Объявление
Swift
func CFWriteStreamGetTypeID() -> CFTypeID
Objective C
CFTypeID CFWriteStreamGetTypeID ( void );
Возвращаемое значение
Идентификатор типа для CFWriteStream непрозрачный тип.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.1 и позже.
-
Когда определенные типы действия имеют место на перезаписываемом потоке, обратный вызов вызвал.
Объявление
Swift
typealias CFWriteStreamClientCallBack = CFunctionPointer<((CFWriteStream!, CFStreamEventType, UnsafeMutablePointer<Void>) -> Void)>
Objective C
typedef void (*CFWriteStreamClientCallBack) ( CFWriteStreamRef stream, CFStreamEventType eventType, void *clientCallBackInfo );
Параметры
stream
Поток, испытавший событие
eventType
.eventType
Событие, заставившее обратный вызов быть вызванным. Возможные события перечислены в Потоковых Событиях..
clientCallBackInfo
info
элементCFStreamClientContext
структура, использовавшаяся при установке клиента дляstream
.Обсуждение
Этот обратный вызов вызывают только для событий, которые требуют при установке клиента с
CFWriteStreamSetClient
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Ссылка на перезаписываемый потоковый объект.
Объявление
Swift
typealias CFWriteStreamRef = CFWriteStream
Objective C
typedef struct __CFWriteStream *CFWriteStreamRef;
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.