OSArray
OSArray обеспечивает индексируемое хранилище объектов.
OSArray является контейнером для объектов C++ Libkern (полученные из OSMetaClassBase в определенном OSObject). Хранение и доступ индексом массива.
Необходимо обычно бросать найденные объекты от OSObject до желаемого использования класса OSDynamicCast. Этот макрос возвращает объектный бросок желаемому классу, или NULL если объект не получен из того класса.
Как со всеми классами набора Libkern, OSArray сохраняет объекты, добавленные к нему, и выпускает объекты, удаленные из него (или замененный). OSArray также растет по мере необходимости для размещения новых объектов, в отличие от Базовых наборов Основы (он, однако, не уменьшается).
Используйте ограничения
За очень немногими исключениями в Наборе I/O все находящиеся в Libkern классы C++, функции и макросы небезопасны использовать в основном контексте прерывания. Консультируйтесь с документацией Набора I/O, связанной с основными прерываниями для получения дополнительной информации.
OSArray не обеспечивает защиты параллелизма; это до контекста использования для обеспечивания любой необходимой защиты. Некоторые части Набора I/O, такие как IORegistryEntry, обрабатывают синхронизацию через определенные функции членства для установки свойств.
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Не применимый
Objective C
@import Kernel;
Доступность
Доступный в OS X v10.0 и позже.
-
Создает глубокую копию массива и его дочерних наборов.
Объявление
C++
OSCollection * copyCollection( OSDictionary *cycleDict = 0);Параметры
cycleDictСловарь всех наборов, скопированных до сих пор, который используется для отслеживания циклических ссылок. Запустить копию на верхнем уровне, передаче
NULL.Возвращаемое значение
Недавно скопированный массив, с сохранить количеством 1, или
NULLесли существует недостаточно память, чтобы сделать копию.Обсуждение
Приемная антенная решетка и любые наборы, которые это содержит, рекурсивно, копируются. Объекты, не полученные из OSCollection, сохраняются, а не копируются.
-
Гарантирует, что массив имеет достаточно пространства для хранения требуемого числа объектов.
Объявление
C++
virtual unsigned int ensureCapacity( unsigned intnewCapacity);Параметры
newCapacityОбщее количество объектов массив должно быть в состоянии сохранить.
Возвращаемое значение
Новая способность массива, который может отличаться от числа, которое требуют (если меньший, перераспределение отказавшего хранения).
Обсуждение
Эта функция сразу изменяет размеры массива, при необходимости, для размещения, по крайней мере,
newCapacityобъекты. ЕслиnewCapacityне больше, чем токовая нагрузка, или если ошибка выделения происходит, исходная способность возвращается.Нет никакого способа сократить способность OSArray.
-
Удаляет и выпускает все объекты в массиве.
Объявление
C++
virtual void flushCollection();Обсуждение
Способность массива (и поэтому потребление непосредственной памяти) не сокращена этой функцией.
-
Освобождает или высвобождает любые средства, используемые экземпляром OSArray.
Объявление
C++
virtual void free();Обсуждение
Эта функция не должна быть вызвана непосредственно; использовать
releaseвместо этого. -
Возвращает число объектов, которые массив может хранить без перераспределения.
Объявление
C++
virtual unsigned int getCapacity() const;Возвращаемое значение
Число возражает, что массив может сохранить без перераспределения.
Обсуждение
Объекты OSArray растут, когда полный для размещения дополнительных объектов. Посмотрите
getCapacityIncrementи ensureCapacity. -
Возвращает инкремент хранения массива.
Объявление
C++
virtual unsigned int getCapacityIncrement() const;Возвращаемое значение
Инкремент хранения массива.
Обсуждение
OSArray выделяет хранение для объектов в сети магазинов полного инкремента.
-
Возвращает текущее число объектов в массиве.
Объявление
C++
virtual unsigned int getCount() const;Возвращаемое значение
Текущее число объектов в массиве.
-
Возвращает последний объект в массиве.
Объявление
C++
virtual OSObject * getLastObject() const;Возвращаемое значение
Последний объект в массиве, или
NULLесли массив пуст.Обсуждение
Возвращенный объект будет выпущен, если удалено из массива; если Вы планируете сохранить ссылку, необходимо вызвать
retainна том объекте. -
Сканирует массив для следующего экземпляра конкретного объекта в или вне данного индекса.
Объявление
C++
virtual unsigned int getNextIndexOfObject( const OSMetaClassBase *anObject, unsigned intindex) const;Параметры
anObjectОбъект отсканировать для.
indexИндекс, в котором можно начать сканирование.
Возвращаемое значение
Следующий индекс
anObjectв массиве или (-1), если ни один не найден.Обсуждение
Эта функция использует эквивалентность указателя и не использует
isEqualTo. -
Возвратите объект, хранивший в данном индексе.
Объявление
C++
virtual OSObject * getObject( unsigned intindex) const;Параметры
indexИндекс объекта, который будет возвращен к вызывающей стороне.
Возвращаемое значение
Объект, хранивший в
index, илиNULLеслиindexнаходится мимо конца массива.Обсуждение
Возвращенный объект будет выпущен, если удалено из массива; если Вы планируете сохранить ссылку, необходимо вызвать
retainна том объекте. -
Инициализирует новый OSArray, заполненный с содержанием другого массива.
Объявление
C++
virtual bool initWithArray( const OSArray *anArray, unsigned int capacity = 0);Параметры
anArrayМассив, содержание которого будет помещено в новый экземпляр.
capacityСпособность исходной системы хранения объекта массива. Если 0, способность установлена в число объектов в
array; иначеcapacityдолжно быть больше, чем или равным числу объектов вarray.Возвращаемое значение
trueна успехе,falseпри отказе.Обсуждение
Не для общего использования. Используйте статический метод создания экземпляра
withArrayвместо этого.arrayдолжен быть не -NULL. Еслиcapacityявляется ненулевым, это должно быть больше, чем или равнымcount. Новый массив будет расти по мере необходимости для размещения большего количества объектов (в отличие от CFMutableArray, для которого начальная способность является жестким пределом).Объекты в
arrayсохраняются для хранения в новом OSArray, не скопированном. -
Инициализирует новый экземпляр OSArray.
Объявление
C++
virtual bool initWithCapacity( unsigned intcapacity);Параметры
capacityСпособность исходной системы хранения объекта массива.
Возвращаемое значение
trueна успехе,falseпри отказе.Обсуждение
Не для общего использования. Используйте статический метод создания экземпляра
withCapacityвместо этого.capacityдолжно быть ненулевым. Новый массив будет расти по мере необходимости для размещения большего количества объектов (в отличие от CFMutableArray, для которого начальная способность является жестким пределом). -
Инициализирует новый OSArray, заполненный с предоставленными объектами.
Объявление
C++
virtual bool initWithObjects( const OSObject *objects[], unsigned intcount, unsigned int capacity = 0);Параметры
objectsМассив C OSObject-производных-объектов.
countЧисло объектов, которые будут помещены в массив.
capacityСпособность исходной системы хранения объекта массива. Если 0,
countиспользуется; иначе это значение должно быть больше, чем или равнымcount.Возвращаемое значение
trueна успехе,falseпри отказе.Обсуждение
Не для общего использования. Используйте статический метод создания экземпляра
withObjectsвместо этого.objectsдолжен быть не -NULL, иcountдолжно быть ненулевым. Еслиcapacityявляется ненулевым, это должно быть больше, чем или равнымcount. Новый массив будет расти по мере необходимости для размещения большего количества объектов (в отличие от CFMutableArray, для которого начальная способность является жестким пределом). -
Тестирует равенство двух объектов OSArray.
Объявление
C++
virtual bool isEqualTo( const OSArray *anArray) const;Параметры
anArrayОбъект массива, сравниваемый с получателем.
Возвращаемое значение
trueесли два массива эквивалентны,falseиначе.Обсуждение
Два объекта OSArray считают равными, если у них есть то же количество и если объекты в соответствующих индексах выдерживают сравнение как равное использование
isEqualTo. -
Тестирует равенство OSArray к произвольному объекту.
Объявление
C++
virtual bool isEqualTo( const OSMetaClassBase *anObject) const;Параметры
anObjectОбъект, который будет сравнен с получателем.
Возвращаемое значение
trueесли два объекта эквивалентны,falseиначе.Обсуждение
Если тот объект получен из OSArray и содержит те же или эквивалентные объекты, OSArray считают равным другому объекту.
-
Добавляет содержание массива на приемную антенную решетку.
Объявление
C++
virtual bool merge( const OSArray *otherArray);Параметры
otherArrayМассив, содержание которого будет добавлено к приемной антенной решетке.
Возвращаемое значение
trueесли слияние было успешно,falseиначе.Обсуждение
Эта функция просто добавляет один массив на другого. Копий не избегают, и никакая сортировка не выполняется. Сохраняются объекты, успешно добавленные к получателю.
-
Удаляет объект из массива.
Объявление
C++
virtual void removeObject( unsigned intindex);Параметры
indexИндекс объекта, который будет удален.
Обсуждение
Эта функция перемещает существующие объекты заполнить освобожденный индекс так, чтобы не было никаких разрывов. Удаленный объект выпущен.
-
Заменяет объект в массиве в данном индексе.
Объявление
C++
virtual void replaceObject( unsigned intindex, const OSMetaClassBase *anObject);Параметры
indexИндекс объекта, который будет заменен. Должны быть меньше, чем количество массива.
anObjectОбъект, который будет помещен в массив.
Обсуждение
Исходный объект выпущен, и новый объект сохраняется.
-
Архивирует получатель в предоставленный объект OSSerialize.
Объявление
C++
virtual bool serialize( OSSerialize *serializer) const;Параметры
serializerОбъект OSSerialize.
Возвращаемое значение
trueесли сериализация успешно выполняется,falseесли нет. -
Устанавливает инкремент хранения массива.
Объявление
C++
virtual unsigned int setCapacityIncrement( unsignedincrement);Возвращаемое значение
Новый инкремент хранения массива, который может отличаться от числа, которое требуют.
Обсуждение
OSArray выделяет хранение для объектов в сети магазинов полного инкремента. Вызывание этой функции сразу не перераспределяет хранение.
-
Добавляет объект на конец массива, увеличивая хранение при необходимости.
Объявление
C++
virtual bool setObject( const OSMetaClassBase *anObject);Параметры
anObjectОбъект добавить к экземпляру OSArray.
Возвращаемое значение
trueесли добавлениеanObjectбыло успешно,falseесли нет.Обсуждение
Массив добавляет хранение для размещения нового объекта, при необходимости. Если успешно добавлено, объект сохраняется.
-
setObject (интервал без знака, константа OSMetaClassBase *) - setObject (интервал без знака, константа OSMetaClassBase *)Вставляет или добавляет объект в массив в определенном индексе.
Объявление
C++
virtual bool setObject( unsigned intindex, const OSMetaClassBase *anObject);Параметры
indexИндекс в массиве, в котором можно вставить объект. Должно быть меньше чем или равно количеству массива.
anObjectОбъект добавить к массиву.
Возвращаемое значение
trueесли добавлениеanObjectбыло успешно,falseесли нет.Обсуждение
Эта функция перемещает существующие объекты от
indexна, для размещения нового объекта; это не заменяет существующий объект вindex. ПосмотритеreplaceObject. Если успешно добавлено, объект сохраняется.Массив добавляет хранение для размещения нового объекта, при необходимости. Отметьте, однако, что эта функция не допускает arbirtrary рост массива путем указания индекса, больше, чем текущее количество. Если необходимо сразу увеличить массив произвольной суммой, использовать
ensureCapacity. -
Рекурсивно биты опции наборов в массиве и всех дочерних наборах.
Объявление
C++
virtual unsigned setOptions( unsignedoptions, unsignedmask, void *context = 0);Параметры
optionsБитовое поле, значения которого поворачивают опции на (1) или прочь (0).
maskМаска, указывающая, который биты в
optionsизмениться. Передайте 0 для получения целого текущего битового поля опций, не изменяя настроек.contextНеиспользованный.
Возвращаемое значение
Битовое поле опций, как это было перед операцией присвоения.
Обсуждение
Расширения ядра не должны вызывать эту функцию.
Опции дочерних наборов изменяются, только если фактически изменяются опции приемной антенной решетки.
-
Создает и инициализирует OSArray, заполненный с содержанием другого массива.
Объявление
C++
static OSArray * withArray( const OSArray *array, unsigned int capacity = 0);Параметры
arrayOSArray, содержание которого будет сохранено в новом экземпляре.
capacityСпособность исходной системы хранения объекта массива. Если 0, способность установлена в число объектов в
array; иначеcapacityдолжно быть больше, чем или равным числу объектов вarray.Возвращаемое значение
Экземпляр OSArray, содержащего объекты
array, с сохранить количеством 1;NULLпри отказе.Обсуждение
arrayдолжен быть не -NULL. Еслиcapacityявляется ненулевым, это должно быть больше, чем или равнымcount. Новый массив будет расти по мере необходимости для размещения большего количества объектов (в отличие от CFMutableArray, для которого начальная способность является жестким пределом).Объекты в
arrayсохраняются для хранения в новом OSArray, не скопированном. -
Создает и инициализирует пустой OSArray.
Объявление
C++
static OSArray * withCapacity( unsigned intcapacity);Параметры
capacityСпособность исходной системы хранения объекта массива.
Возвращаемое значение
Пустой экземпляр OSArray с сохранить количеством 1;
NULLпри отказе.Обсуждение
capacityдолжно быть ненулевым. Новый массив будет расти по мере необходимости для размещения большего количества объектов (в отличие от CFMutableArray, для которого начальная способность является жестким пределом). -
Создает и инициализирует OSArray, заполненный с предоставленными объектами.
Объявление
C++
static OSArray * withObjects( const OSObject *objects[], unsigned intcount, unsigned int capacity = 0);Параметры
objectsМассив C OSObject-полученных экземпляров.
countЧисло объектов, которые будут помещены в массив.
capacityСпособность исходной системы хранения объекта массива. Если 0,
countиспользуется; иначе это значение должно быть больше, чем или равнымcount.Возвращаемое значение
Экземпляр OSArray, содержащего объекты, если, с сохранить количеством 1;
NULLпри отказе.Обсуждение
objectsдолжен быть не -NULL, иcountдолжно быть ненулевым. Еслиcapacityявляется ненулевым, это должно быть больше, чем или равнымcount. Новый массив будет расти по мере необходимости для размещения большего количества объектов (в отличие от CFMutableArray, для которого начальная способность является жестким пределом).
