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 int
newCapacity
);Параметры
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 int
index
) 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 int
capacity
);Параметры
capacity
Способность исходной системы хранения объекта массива.
Возвращаемое значение
true
на успехе,false
при отказе.Обсуждение
Не для общего использования. Используйте статический метод создания экземпляра
withCapacity
вместо этого.capacity
должно быть ненулевым. Новый массив будет расти по мере необходимости для размещения большего количества объектов (в отличие от CFMutableArray, для которого начальная способность является жестким пределом). -
Инициализирует новый OSArray, заполненный с предоставленными объектами.
Объявление
C++
virtual bool initWithObjects( const OSObject *objects[], unsigned int
count
, 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 int
index
);Параметры
index
Индекс объекта, который будет удален.
Обсуждение
Эта функция перемещает существующие объекты заполнить освобожденный индекс так, чтобы не было никаких разрывов. Удаленный объект выпущен.
-
Заменяет объект в массиве в данном индексе.
Объявление
C++
virtual void replaceObject( unsigned int
index
, const OSMetaClassBase *anObject
);Параметры
index
Индекс объекта, который будет заменен. Должны быть меньше, чем количество массива.
anObject
Объект, который будет помещен в массив.
Обсуждение
Исходный объект выпущен, и новый объект сохраняется.
-
Архивирует получатель в предоставленный объект OSSerialize.
Объявление
C++
virtual bool serialize( OSSerialize *
serializer
) const;Параметры
serializer
Объект OSSerialize.
Возвращаемое значение
true
если сериализация успешно выполняется,false
если нет. -
Устанавливает инкремент хранения массива.
Объявление
C++
virtual unsigned int setCapacityIncrement( unsigned
increment
);Возвращаемое значение
Новый инкремент хранения массива, который может отличаться от числа, которое требуют.
Обсуждение
OSArray выделяет хранение для объектов в сети магазинов полного инкремента. Вызывание этой функции сразу не перераспределяет хранение.
-
Добавляет объект на конец массива, увеличивая хранение при необходимости.
Объявление
C++
virtual bool setObject( const OSMetaClassBase *
anObject
);Параметры
anObject
Объект добавить к экземпляру OSArray.
Возвращаемое значение
true
если добавлениеanObject
было успешно,false
если нет.Обсуждение
Массив добавляет хранение для размещения нового объекта, при необходимости. Если успешно добавлено, объект сохраняется.
-
setObject (интервал без знака, константа OSMetaClassBase *) - setObject (интервал без знака, константа OSMetaClassBase *)
Вставляет или добавляет объект в массив в определенном индексе.
Объявление
C++
virtual bool setObject( unsigned int
index
, const OSMetaClassBase *anObject
);Параметры
index
Индекс в массиве, в котором можно вставить объект. Должно быть меньше чем или равно количеству массива.
anObject
Объект добавить к массиву.
Возвращаемое значение
true
если добавлениеanObject
было успешно,false
если нет.Обсуждение
Эта функция перемещает существующие объекты от
index
на, для размещения нового объекта; это не заменяет существующий объект вindex
. ПосмотритеreplaceObject
. Если успешно добавлено, объект сохраняется.Массив добавляет хранение для размещения нового объекта, при необходимости. Отметьте, однако, что эта функция не допускает arbirtrary рост массива путем указания индекса, больше, чем текущее количество. Если необходимо сразу увеличить массив произвольной суммой, использовать
ensureCapacity
. -
Рекурсивно биты опции наборов в массиве и всех дочерних наборах.
Объявление
C++
virtual unsigned setOptions( unsigned
options
, unsignedmask
, void *context = 0);Параметры
options
Битовое поле, значения которого поворачивают опции на (1) или прочь (0).
mask
Маска, указывающая, который биты в
options
измениться. Передайте 0 для получения целого текущего битового поля опций, не изменяя настроек.context
Неиспользованный.
Возвращаемое значение
Битовое поле опций, как это было перед операцией присвоения.
Обсуждение
Расширения ядра не должны вызывать эту функцию.
Опции дочерних наборов изменяются, только если фактически изменяются опции приемной антенной решетки.
-
Создает и инициализирует OSArray, заполненный с содержанием другого массива.
Объявление
C++
static OSArray * withArray( const OSArray *
array
, unsigned int capacity = 0);Параметры
array
OSArray, содержание которого будет сохранено в новом экземпляре.
capacity
Способность исходной системы хранения объекта массива. Если 0, способность установлена в число объектов в
array
; иначеcapacity
должно быть больше, чем или равным числу объектов вarray
.Возвращаемое значение
Экземпляр OSArray, содержащего объекты
array
, с сохранить количеством 1;NULL
при отказе.Обсуждение
array
должен быть не -NULL
. Еслиcapacity
является ненулевым, это должно быть больше, чем или равнымcount
. Новый массив будет расти по мере необходимости для размещения большего количества объектов (в отличие от CFMutableArray, для которого начальная способность является жестким пределом).Объекты в
array
сохраняются для хранения в новом OSArray, не скопированном. -
Создает и инициализирует пустой OSArray.
Объявление
C++
static OSArray * withCapacity( unsigned int
capacity
);Параметры
capacity
Способность исходной системы хранения объекта массива.
Возвращаемое значение
Пустой экземпляр OSArray с сохранить количеством 1;
NULL
при отказе.Обсуждение
capacity
должно быть ненулевым. Новый массив будет расти по мере необходимости для размещения большего количества объектов (в отличие от CFMutableArray, для которого начальная способность является жестким пределом). -
Создает и инициализирует OSArray, заполненный с предоставленными объектами.
Объявление
C++
static OSArray * withObjects( const OSObject *objects[], unsigned int
count
, unsigned int capacity = 0);Параметры
objects
Массив C OSObject-полученных экземпляров.
count
Число объектов, которые будут помещены в массив.
capacity
Способность исходной системы хранения объекта массива. Если 0,
count
используется; иначе это значение должно быть больше, чем или равнымcount
.Возвращаемое значение
Экземпляр OSArray, содержащего объекты, если, с сохранить количеством 1;
NULL
при отказе.Обсуждение
objects
должен быть не -NULL
, иcount
должно быть ненулевым. Еслиcapacity
является ненулевым, это должно быть больше, чем или равнымcount
. Новый массив будет расти по мере необходимости для размещения большего количества объектов (в отличие от CFMutableArray, для которого начальная способность является жестким пределом).