OSData
OSData обертывает массив байтов в объекте C++ для использования в наборах Libkern.
OSData представляет массив байтов как объект C++ Libkern. Объекты OSData являются непостоянными: можно добавить байты к ним и перезаписать части массива байтов.
Используйте ограничения
За очень немногими исключениями в Наборе I/O все находящиеся в Libkern классы C++, функции и макросы небезопасны использовать в основном контексте прерывания. Консультируйтесь с документацией Набора I/O, связанной с основными прерываниями для получения дополнительной информации.
OSData не обеспечивает защиты параллелизма; это до контекста использования для обеспечивания любой необходимой защиты. Некоторые части Набора I/O, такие как IORegistryEntry, обрабатывают синхронизацию через определенные функции членства для установки свойств.
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Не применимый
Objective C
@import Kernel;
Доступность
Доступный в OS X v10.0 и позже.
-
Добавляет единственное значение байта к внутреннему буферу данных объекта OSData конкретное количество времен.
Объявление
C++
virtual bool appendByte( unsigned charbyte, unsigned intnumBytes);Параметры
byteЗначение байта для добавления.
numBytesЧисло копий
byteдобавлять.Возвращаемое значение
trueесли новые данные были успешно добавлены,falseесли нет.Обсуждение
Эта функция сразу изменяет размеры буфера OSDATA, при необходимости, для размещения нового общего размера.
Создаваемый «NoCopy» объекта OSData не позволяет байтам быть добавленными.
-
Добавляет данные, содержавшиеся в другом объекте OSData.
Объявление
C++
virtual bool appendBytes( const OSData *aDataObj);Параметры
aDataObjOSData возражают, чье содержание будет добавлено.
Возвращаемое значение
trueесли новые данные были успешно добавлены,falseпри отказе.Обсуждение
Эта функция сразу изменяет размеры буфера OSDATA, при необходимости, для размещения нового общего размера.
Создаваемый «NoCopy» объекта OSData не позволяет байтам быть добавленными.
-
appendBytes (константа, недействительная *, интервал без знака) - appendBytes (константа, недействительная *, интервал без знака)Добавляет буфер байтов к внутреннему буферу данных объекта OSData.
Объявление
C++
virtual bool appendBytes( const void *bytes, unsigned intnumBytes);Параметры
bytesУказатель на данные для добавления. Если
bytesNULLтогда заполненный нулями буфер длиныnumBytesдобавляется.numBytesЧисло байтов от
bytesдобавлять.Возвращаемое значение
trueесли новые данные были успешно добавлены,falseпри отказе.Обсуждение
Эта функция сразу изменяет размеры буфера OSDATA, при необходимости, для размещения нового общего размера.
Создаваемый «NoCopy» объекта OSData не позволяет байтам быть добавленными.
-
Гарантирует, что массив имеет достаточно пространства для хранения требуемого числа байтов.
Объявление
C++
virtual unsigned int ensureCapacity( unsigned intnewCapacity);Параметры
newCapacityОбщее количество байтов объект OSData должно быть в состоянии сохранить.
Возвращаемое значение
Возвращает новую способность объекта OSData, который может отличаться от числа, которое требуют (если меньший, перераспределение отказавшего хранения).
Обсуждение
Эта функция сразу изменяет размеры буфера OSDATA, при необходимости, для размещения, по крайней мере,
newCapacityбайты. ЕслиnewCapacityне больше, чем токовая нагрузка, или если ошибка выделения происходит, исходная способность возвращается.Нет никакого способа сократить способность OSData.
Создаваемый «NoCopy» объекта OSData не позволяет изменять размеры.
-
Освобождает или высвобождает любые средства, используемые экземпляром OSDictionary.
Объявление
C++
virtual void free();Обсуждение
Эта функция не должна быть вызвана непосредственно; использовать
releaseвместо этого. -
Возвращает указатель на внутренний буфер данных объекта OSData.
Объявление
C++
virtual const void * getBytesNoCopy() const;Возвращаемое значение
Указатель на внутренний буфер данных объекта OSData.
Обсуждение
Можно изменить существующее содержание объекта OSData через эту функцию. Это работает с объектами OSData, имеющими их собственные буферы данных, а также с объектами OSData, совместно использовавшими буферы.
При добавлении байтов или символов к объекту OSData ему, вероятно, придется перераспределить его внутреннюю память, представив недопустимый extrated указатель на то хранение.
-
getBytesNoCopy (интервал без знака, интервал без знака) - getBytesNoCopy (интервал без знака, интервал без знака)Возвращает указатель во внутренний буфер данных объекта OSData с данным смещением и длиной.
Объявление
C++
virtual const void * getBytesNoCopy( unsigned intstart, unsigned intnumBytes) const;Параметры
startСмещение от основы внутреннего буфера данных.
numBytesДлина окна.
Возвращаемое значение
Указатель на байты в указанном диапазоне в объекте OSData, или 0, если тот диапазон не лежит полностью в буфере объекта.
Обсуждение
Можно изменить существующее содержание объекта OSData через эту функцию. Это работает с объектами OSData, имеющими их собственные буферы данных, а также с объектами OSData, совместно использовавшими буферы.
При добавлении байтов или символов к объекту OSData ему, вероятно, придется перераспределить его внутреннюю память, представив недопустимый extrated указатель на то хранение.
-
Возвращает общее количество байтов, которые OSData может сохранить без перераспределения.
Объявление
C++
virtual unsigned int getCapacity() const;Возвращаемое значение
Байты общего количества OSData могут сохранить без перераспределения.
Обсуждение
Объекты OSData растут, когда полный для размещения дополнительных байтов. Посмотрите
getCapacityIncrementиensureCapacity.Объекты OSData, создаваемые или инициализированные для использования совместно используемого буфера, не используют этот атрибут и возвращаются-1 из этой функции.
-
Возвращает инкремент хранения объекта OSData.
Объявление
C++
virtual unsigned int getCapacityIncrement() const;Возвращаемое значение
Инкремент хранения объекта OSData.
Обсуждение
Объект OSData выделяет хранение для байтов в сети магазинов полного инкремента.
Объекты OSData, создаваемые или инициализированные для использования совместно используемого буфера, не используют этот атрибут.
-
Возвращает число байтов в или ссылаемый объектом OSData.
Объявление
C++
virtual unsigned int getLength() const;Возвращаемое значение
Число байтов в или ссылаемый объектом OSData.
-
Инициализирует экземпляр OSData с копией буфера предоставленных данных.
Объявление
C++
virtual bool initWithBytes( const void *bytes, unsigned intnumBytes);Параметры
bytesБуфер данных для копирования.
numBytesДлина
bytes.Возвращаемое значение
trueна успехе,falseпри отказе.Обсуждение
Не для общего использования. Используйте статический метод создания экземпляра
withBytesвместо этого.Новый объект OSData будет расти по мере необходимости для размещения большего количества байтов (в отличие от CFMutableData, для которого ненулевая начальная способность является жестким пределом).
-
Инициализирует экземпляр OSData для совместного использования буфера предоставленных данных.
Объявление
C++
virtual bool initWithBytesNoCopy( void *bytes, unsigned intnumBytes);Параметры
bytesБуфер данных для представления.
numBytesДлина
bytes.Возвращаемое значение
trueна успехе,falseпри отказе.Обсуждение
Не для общего использования. Используйте статический метод создания экземпляра
withBytesNoCopyвместо этого.Объект OSData, инициализированный с этой функцией, не требует владения буфера данных, но просто совместно использует его с вызывающей стороной.
Объект OSData, создаваемый с совместно используемыми внешними данными, не может добавить байты, но можно получить указатель байта и изменить байты в совместно используемом буфере.
-
Инициализирует экземпляр OSData.
Объявление
C++
virtual bool initWithCapacity( unsigned intcapacity);Параметры
capacityНачальная способность OSData возражает в байтах.
Возвращаемое значение
trueна успехе,falseпри отказе.Обсуждение
Не для общего использования. Используйте статический метод создания экземпляра
withCapacityвместо этого.capacityможет быть нуль. Объект OSData выделит буфер внутренне при необходимости и будет расти по мере необходимости для размещения большего количества байтов (в отличие от CFMutableData, для которого ненулевая начальная способность является жестким пределом). -
Создает и инициализирует экземпляр OSData с содержанием, скопированным с другого объекта OSData.
Объявление
C++
virtual bool initWithData( const OSData *inData);Параметры
inDataОбъект OSData, предоставляющий исходные данные.
Возвращаемое значение
trueна успехе,falseпри отказе.Обсуждение
Не для общего использования. Используйте статический метод создания экземпляра
withData(OSData *)вместо этого.Новый объект OSData будет расти по мере необходимости для размещения большего количества байтов (в отличие от CFMutableData, для которого ненулевая начальная способность является жестким пределом).
-
initWithData (константа OSData *, интервал без знака, интервал без знака) - initWithData (константа OSData *, интервал без знака, интервал без знака)Инициализирует экземпляр OSData с содержанием, скопированным с диапазона в другом объекте OSData.
Объявление
C++
virtual bool initWithData( const OSData *inData, unsigned intstart, unsigned intnumBytes);Параметры
inDataОбъект OSData, предоставляющий исходные данные.
startНачальное значение индекса, с которого будут скопированы байты.
numBytesЧисло байтов, которые будут скопированы с
start.Возвращаемое значение
Возвраты
trueна успехе,falseпри отказе.Обсуждение
Не для общего использования. Используйте статический метод создания экземпляра
withData(OSData *, unsigned int, unsigned int)вместо этого.Новый объект OSData будет расти по мере необходимости для размещения большего количества байтов (в отличие от CFMutableData, для которого ненулевая начальная способность является жестким пределом).
-
Тестирует равенство двух объектов OSData.
Объявление
C++
virtual bool isEqualTo( const OSData *aDataObj) const;Параметры
aDataObjОбъект OSData, сравниваемый с получателем.
Возвращаемое значение
trueесли два объекта OSData эквивалентны,falseиначе.Обсуждение
Два объекта OSData считают равными, если у них есть та же длина и если их буферы байта содержат то же содержание.
-
Тестирует равенство объекта OSData к произвольному объекту.
Объявление
C++
virtual bool isEqualTo( const OSMetaClassBase *anObject) const;Параметры
anObjectОбъект, который будет сравнен с получателем.
Возвращаемое значение
trueесли два объекта эквивалентны,falseиначе.Обсуждение
Если тот объект получен из OSData и содержит эквивалентные байты той же длины, OSData считают равным другому объекту.
-
Тестирует равенство объекта OSData к OSString.
Объявление
C++
virtual bool isEqualTo( const OSString *aString) const;Параметры
aStringСтроковый объект, который будет сравнен с получателем.
Возвращаемое значение
trueесли два объекта эквивалентны,falseиначе.Обсуждение
Эта функция сравнивает байты объекта OSData против тех из OSString, составляя возможность, что OSData мог бы явно включать nul символ как часть его общей длины. Таким образом, например, OSData возражают содержащий любого байты <'u'', 'b', '\0'> или <'u'', 'b'> выдержит сравнение как равный OSString, содержащему «usb».
-
isEqualTo (константа, недействительная *, интервал без знака) - isEqualTo (константа, недействительная *, интервал без знака)Тестирует равенство содержания объекта OSData к массиву C байтов.
Объявление
C++
virtual bool isEqualTo( const void *bytes, unsigned intnumBytes) const;Параметры
bytesУказатель на байты для сравнения.
numBytesЧисло байтов для сравнения.
Возвращаемое значение
trueесли буферы данных равны по данной длине,falseиначе. -
Архивирует получатель в предоставленный объект OSSerialize.
Объявление
C++
virtual bool serialize( OSSerialize *serializer) const;Параметры
serializerОбъект OSSerialize.
Возвращаемое значение
trueесли сериализация успешно выполняется,falseесли нет. -
Устанавливает инкремент хранения массива.
Объявление
C++
virtual unsigned int setCapacityIncrement( unsignedincrement);Возвращаемое значение
Инкремент исходной системы хранения массива.
Обсуждение
OSArray выделяет хранение для объектов в сети магазинов полного инкремента.
Объекты OSData, создаваемые или инициализированные для использования совместно используемого буфера, не используют этот атрибут.
-
Создает и инициализирует экземпляр OSData с копией буфера предоставленных данных.
Объявление
C++
static OSData * withBytes( const void *bytes, unsigned intnumBytes);Параметры
bytesБуфер данных для копирования.
numBytesДлина
bytes.Возвращаемое значение
Экземпляр OSData, содержащего копию предоставленного массива байтов, с подсчетом ссылок 1;
NULLпри отказе.Обсуждение
Новый объект OSData будет расти по мере необходимости для размещения большего количества байтов (в отличие от CFMutableData, для которого ненулевая начальная способность является жестким пределом).
-
Создает и инициализирует экземпляр OSData, совместно использующего буфер предоставленных данных.
Объявление
C++
static OSData * withBytesNoCopy( void *bytes, unsigned intnumBytes);Параметры
bytesБуфер данных для представления.
numBytesДлина
bytes.Возвращаемое значение
Экземпляр OSData, совместно использующего предоставленный массив байтов с подсчетом ссылок 1;
NULL<coe> on failure.Обсуждение
Объект OSData, создаваемый с этой функцией, не требует владения буфера данных, но совместно использует его с вызывающей стороной. Когда вызывающая сторона решает, что объект OSData был фактически освобожден, это может безопасно избавиться от буфера данных. С другой стороны, если это освобождает совместно используемый буфер данных, это не должно пытаться использовать объект OSData и должно выпустить его.
Объект OSData, создаваемый с совместно используемыми внешними данными, не может добавить байты, но можно получить указатель байта и изменить байты в совместно используемом буфере.
-
Создает и инициализирует пустой экземпляр OSData.
Объявление
C++
static OSData * withCapacity( unsigned intcapacity);Параметры
capacityНачальная способность OSData возражает в байтах.
Возвращаемое значение
Экземпляр OSData с подсчетом ссылок 1;
NULLпри отказе.Обсуждение
capacityможет быть нуль. Объект OSData выделит буфер внутренне при необходимости и будет расти по мере необходимости для размещения большего количества байтов (в отличие от CFMutableData, для которого ненулевая начальная способность является жестким пределом). -
Создает и инициализирует экземпляр OSData с содержанием, скопированным с другого объекта OSData.
Объявление
C++
static OSData * withData( const OSData *inData);Параметры
inDataОбъект OSData, предоставляющий исходные данные.
Возвращаемое значение
Экземпляр OSData, содержащего копию данных в
inData, с подсчетом ссылок 1;NULLпри отказе.Обсуждение
Новый объект OSData будет расти по мере необходимости для размещения большего количества байтов (в отличие от CFMutableData, для которого ненулевая начальная способность является жестким пределом).
-
withData (константа OSData *, интервал без знака, интервал без знака) - withData (константа OSData *, интервал без знака, интервал без знака)Создает и инициализирует экземпляр OSData с содержанием, скопированным с диапазона в другом объекте OSData.
Объявление
C++
static OSData * withData( const OSData *inData, unsigned intstart, unsigned intnumBytes);Параметры
inDataОбъект OSData, предоставляющий исходные данные.
startНачальное значение индекса, с которого будут скопированы байты.
numBytesЧисло байтов, которые будут скопированы с
start.Возвращаемое значение
Экземпляр OSData, содержащего копию указанных данных, располагается от
inData, с подсчетом ссылок 1;NULLпри отказе.Обсуждение
Новый объект OSData будет расти по мере необходимости для размещения большего количества байтов (в отличие от CFMutableData, для которого ненулевая начальная способность является жестким пределом).
