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);Параметры
inCollOSCollection-полученный объект коллекции, чтобы быть iteratated.
Возвращаемое значение
trueесли инициализация была успешна, илиfalseпри отказе.Обсуждение
Не для общего использования. Используйте статический метод создания экземпляра
withCollectionвместо этого. -
Проверки, что набор не был изменен во время итерации.
Объявление
C++
virtual bool isValid();Возвращаемое значение
trueесли итератор допустим для продолжительного использования,falseиначе (обычно, потому что итеративный контекст был изменен). -
Сбрасывает итератор к началу набора, как будто это было просто создано.
Объявление
C++
virtual void reset(); -
Создает и инициализирует OSCollectionIterator для предоставленного объекта коллекции.
Объявление
C++
static OSCollectionIterator * withCollection( const OSCollection *inColl);Параметры
inCollOSCollection-полученный объект коллекции, чтобы быть iteratated.
Возвращаемое значение
Новый экземпляр OSCollectionIterator, или
NULLпри отказе.
