OSCollectionIterator
OSCollectionIterator определяет непротиворечивый механизм для итерации через объекты OSCollection. Это подробно останавливается на основном интерфейсе OSIterator для разрешения ассоциации итератора с определенным набором.
Для использования OSCollectionIterator Вы создаете его с набором, который будет выполнен с помощью итераций, затем вызовет OSIterator, пока это возвращает объект:
<пред> OSCollectionIterator * итератор = OSCollectionIterator:: withCollection (myCollection); OSObject * объект; в то время как (возражают = итератор-> getNextObject ()) {//делают что-то с объектом}//дополнительный если (! итератор-> isValid ()) {//сообщают, что набор изменился во время итерации} итератор-> выпуск (); </пред>
Обратите внимание на то, что при итерации ассоциативных наборов, объекты, возвращенные getNextObject
ключи; если Вы хотите работать с присваиваемыми значениями, просто искать их в наборе с ключами.
Используйте ограничения
За очень немногими исключениями в Наборе I/O все находящиеся в Libkern классы C++, функции и макросы небезопасны использовать в основном контексте прерывания. Консультируйтесь с документацией Набора I/O, связанной с основными прерываниями для получения дополнительной информации.
OSCollectionIterator не обеспечивает защиты параллелизма.
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Не применимый
Objective C
@import Kernel;
Доступность
Доступный в OS X v10.0 и позже.
-
Выпуски или освобождают любые ресурсы, используемые объектом OSCollectionIterator.
Объявление
C++
virtual void free();
Обсуждение
Эта функция не должна быть вызвана непосредственно; использовать
release
вместо этого. -
Усовершенствования к и возвраты следующий объект в итерации.
Объявление
C++
virtual OSObject * getNextObject();
Возвращаемое значение
Следующий объект в итеративном контексте,
NULL
если итератор больше не действителен, если существует никакой следующий объект или.Обсуждение
Эта функция сначала вызывает
isValid
и возвратыNULL
если возвращается та функцияfalse
.Подклассы должны реализовать эту чистую виртуальную функцию для проверки на законность с
isValid
, и затем усовершенствовать итеративный контекст к следующему объекту (если таковые имеются) и возврат, которые затем возражают, илиNULL
если нет ни одного. -
Инициализирует OSCollectionIterator для предоставленного объекта коллекции.
Объявление
C++
virtual bool initWithCollection( const OSCollection *
inColl
);Параметры
inColl
OSCollection-полученный объект коллекции, чтобы быть iteratated.
Возвращаемое значение
true
если инициализация была успешна, илиfalse
при отказе.Обсуждение
Не для общего использования. Используйте статический метод создания экземпляра
withCollection
вместо этого. -
Проверки, что набор не был изменен во время итерации.
Объявление
C++
virtual bool isValid();
Возвращаемое значение
true
если итератор допустим для продолжительного использования,false
иначе (обычно, потому что итеративный контекст был изменен). -
Сбрасывает итератор к началу набора, как будто это было просто создано.
Объявление
C++
virtual void reset();
-
Создает и инициализирует OSCollectionIterator для предоставленного объекта коллекции.
Объявление
C++
static OSCollectionIterator * withCollection( const OSCollection *
inColl
);Параметры
inColl
OSCollection-полученный объект коллекции, чтобы быть iteratated.
Возвращаемое значение
Новый экземпляр OSCollectionIterator, или
NULL
при отказе.