OSDictionary
OSDictionary обеспечивает ассоциативное хранилище с помощью строк для ключей.
OSDictionary является контейнером для объектов C++ Libkern (полученные из OSMetaClassBase в определенном OSObject). Хранение и доступ ассоциативны, на основе оцененных строке ключей (струна до, OSString или OSSymbol). При добавлении объекта к OSDictionary Вы обеспечиваете идентификатор строки, могущий тогда используемый, чтобы получить тот объект или удалить его из словаря. Установка объекта с ключом, уже имеющим связанный объект, заменяет исходный объект.
Необходимо обычно бросать найденные объекты от OSObject до желаемого использования класса OSDynamicCast. Этот макрос возвращает объектный бросок желаемому классу, или NULL если объект не получен из того класса.
При итерации OSDictionary использование OSCollectionIterator объекты возвратились из getNextObject ключи словаря (не объектные значения для тех ключей). Можно использовать ключи для получения их связанных объектных значений.
Как со всеми классами набора Libkern, OSDictionary сохраняет ключи и объекты, добавленные к нему, и отпускает клавиши и объекты, удаленные из него (или замененный). OSDictionary также растет по мере необходимости для размещения новых пар ключ/значение, в отличие от Базовых наборов Основы (он, однако, не уменьшается).
Примечание: OSDictionary в настоящее время использует линейный алгоритм поиска и не разработан для высокоэффективного доступа многих значений. Это предназначается как простой ассоциативный механизм хранения только.
Используйте ограничения
За очень немногими исключениями в Наборе I/O все находящиеся в Libkern классы C++, функции и макросы небезопасны использовать в основном контексте прерывания. Консультируйтесь с документацией Набора I/O, связанной с основными прерываниями для получения дополнительной информации.
OSDictionary не обеспечивает защиты параллелизма; это до контекста использования для обеспечивания любой необходимой защиты. Некоторые части Набора 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не больше, чем токовая нагрузка, или если ошибка выделения происходит, исходная способность возвращается.Нет никакого способа сократить способность OSDictionary.
-
Удаляет и отпускает все клавиши и объекты в словаре.
Объявление
C++
virtual void flushCollection();Обсуждение
Способность словаря (и поэтому потребление непосредственной памяти) не сокращена этой функцией.
-
Освобождает или высвобождает любые средства, используемые экземпляром OSDictionary.
Объявление
C++
virtual void free();Обсуждение
Эта функция не должна быть вызвана непосредственно, использовать
releaseвместо этого. -
Возвращает число объектов, которые словарь может хранить без перераспределения.
Объявление
C++
virtual unsigned int getCapacity() const;Возвращаемое значение
Число возражает, что словарь может сохранить без перераспределения.
Обсуждение
Объекты OSDictionary растут, когда полный для размещения дополнительных ключевых/объектных пар. Посмотрите
getCapacityIncrementиensureCapacity. -
Возвращает инкремент хранения словаря.
Объявление
C++
virtual unsigned int getCapacityIncrement() const;Возвращаемое значение
Инкремент хранения словаря.
Обсуждение
OSDictionary выделяет хранение для ключевых/объектных пар в сети магазинов полного инкремента.
-
Возвращает текущее число ключевых/объектных пар, содержавших в словаре.
Объявление
C++
virtual unsigned int getCount() const;Возвращаемое значение
Текущее число ключевых/объектных пар содержится в словаре.
-
Возвращает объект, хранивший под данным ключом.
Объявление
C++
virtual OSObject * getObject( const char *aKey) const;Параметры
aKeyКлюч струны до идентификация объекта, который будет возвращен к вызывающей стороне.
Возвращаемое значение
Объект, хранивший под
aKey, илиNULLесли ключ не существует в словаре.Обсуждение
Возвращенный объект будет выпущен, если удалено из словаря; если Вы планируете сохранить ссылку, необходимо вызвать
retainна том объекте. -
Возвращает объект, хранивший под данным ключом.
Объявление
C++
virtual OSObject * getObject( const OSString *aKey) const;Параметры
aKeyКлюч OSString, идентифицирующий объект, который будет возвращен к вызывающей стороне.
Возвращаемое значение
Объект, хранивший под
aKey, илиNULLесли ключ не существует в словаре.Обсуждение
Возвращенный объект будет выпущен, если удалено из словаря; если Вы планируете сохранить ссылку, необходимо вызвать
retainна том объекте. -
Возвращает объект, хранивший под данным ключом.
Объявление
C++
virtual OSObject * getObject( const OSSymbol *aKey) const;Параметры
aKeyКлюч OSSymbol, идентифицирующий объект, который будет возвращен к вызывающей стороне.
Возвращаемое значение
Объект, хранивший под
aKey, илиNULLесли ключ не существует в словаре.Обсуждение
Возвращенный объект будет выпущен, если удалено из словаря; если Вы планируете сохранить ссылку, необходимо вызвать
retainна том объекте. -
Инициализирует новый экземпляр OSDictionary.
Объявление
C++
virtual bool initWithCapacity( unsigned intcapacity);Параметры
capacityСпособность исходной системы хранения нового объекта словаря.
Возвращаемое значение
trueна успехе,falseпри отказе.Обсуждение
Не для общего использования. Используйте статический метод создания экземпляра
withCapacityвместо этого.capacityдолжно быть ненулевым. Новый словарь будет расти по мере необходимости для размещения большего количества ключевых/объектных пар (в отличие от CFMutableDictionary, для которого начальная способность является жестким пределом). -
Инициализирует новый OSDictionary с содержанием другого словаря.
Объявление
C++
virtual bool initWithDictionary( const OSDictionary *dict, unsigned int capacity = 0);Параметры
dictСловарь, содержание которого будет помещено в новый экземпляр.
capacityСпособность исходной системы хранения нового объекта словаря. Если 0, способность установлена в число пар ключ/значение в
dict; иначеcapacityдолжно быть больше, чем или равным числу пар ключ/значение вdict.Возвращаемое значение
trueна успехе,falseпри отказе.Обсуждение
Не для общего использования. Используйте статический метод создания экземпляра
withDictionaryвместо этого.dictдолжен быть не -NULL. Еслиcapacityявляется ненулевым, это должно быть больше, чем или равнымcount. Новый словарь будет расти по мере необходимости для размещения большего количества ключевых/объектных пар (в отличие от CFMutableDictionary, для которого начальная способность является жестким пределом).Ключи и объекты в
dictсохраняются для хранения в новом OSDictionary, не скопированном. -
initWithObjects (константа OSObject *, константа OSString *, интервал без знака, интервал без знака) - initWithObjects (константа OSObject *, константа OSString *, интервал без знака, интервал без знака)Инициализирует новый OSDictionary с ключами и предоставленными объектами.
Объявление
C++
virtual bool initWithObjects( const OSObject *objects[], const OSString *keys[], unsigned intcount, unsigned int capacity = 0);Параметры
objectsМассив C OSMetaClassBase-производных-объектов.
keysМассив C ключей OSString для соответствующих объектов в
objects.countЧисло ключей и объектов, которые будут помещены в словарь.
capacityСпособность исходной системы хранения нового объекта словаря. Если 0,
countиспользуется; иначе это значение должно быть больше, чем или равнымcount.Возвращаемое значение
trueна успехе,falseпри отказе.Обсуждение
Не для общего использования. Используйте статический метод создания экземпляра
withObjectsвместо этого.objectsиkeysдолжен быть не -NULL, иcountдолжно быть ненулевым. Еслиcapacityявляется ненулевым, это должно быть больше, чем или равнымcount. Новый словарь будет расти по мере необходимости для размещения большего количества ключевых/объектных пар (в отличие от CFMutableDictionary, для которого начальная способность является жестким пределом). -
initWithObjects (константа OSObject *, константа OSSymbol *, интервал без знака, интервал без знака) - initWithObjects (константа OSObject *, константа OSSymbol *, интервал без знака, интервал без знака)Инициализирует новый OSDictionary с ключами и предоставленными объектами.
Объявление
C++
virtual bool initWithObjects( const OSObject *objects[], const OSSymbol *keys[], unsigned intcount, unsigned int capacity = 0);Параметры
objectsМассив C OSMetaClassBase-производных-объектов.
keysМассив C ключей OSSymbol для соответствующих объектов в
objects.countЧисло ключей и объектов, которые будут помещены в словарь.
capacityСпособность исходной системы хранения нового объекта словаря. Если 0,
countиспользуется; иначе это значение должно быть больше, чем или равнымcount.Возвращаемое значение
trueна успехе,falseпри отказе.Обсуждение
Не для общего использования. Используйте статический метод создания экземпляра
withObjectsвместо этого.objectsиkeysдолжен быть не -NULL, иcountдолжно быть ненулевым. Еслиcapacityявляется ненулевым, это должно быть больше, чем или равнымcount. Новый словарь будет расти как neede для размещения большего количества ключевых/объектных пар (в отличие от CFMutableDictionary, для которого начальная способность является жестким пределом). -
Тестирует равенство OSDictionary к произвольному объекту.
Объявление
C++
virtual bool isEqualTo( const OSMetaClassBase *anObject) const;Параметры
anObjectОбъект, который будет сравнен с получателем.
Возвращаемое значение
trueесли объекты равны.Обсуждение
Если тот объект получен из OSDictionary и содержит те же или эквивалентные объекты, OSDictionary считают равным другому объекту.
-
Тестирует равенство двух объектов OSDictionary.
Объявление
C++
virtual bool isEqualTo( const OSDictionary *aDictionary) const;Параметры
aDictionaryСловарь, который будет сравнен с получателем.
Возвращаемое значение
trueесли словари равны,falseесли нет.Обсуждение
Два объекта OSDictionary считают равными, если у них есть то же количество, те же ключи, и если объекты, хранившие в каждом под данным ключом, выдерживают сравнение как равное использование
isEqualTo. -
isEqualTo (константа OSDictionary *, константа OSCollection *) - isEqualTo (константа OSDictionary *, константа OSCollection *)Тестирует равенство двух объектов OSDictionary по подмножеству ключей.
Объявление
C++
virtual bool isEqualTo( const OSDictionary *aDictionary, const OSCollection *keys) const;Параметры
aDictionaryСловарь, который будет сравнен с получателем.
keysВозвращаемое значение
trueесли пересечения этих двух словарей равны.Обсуждение
Два объекта OSDictionary считает равными эта функция, если и иметь объекты, хранившие для всех ключей, если, и если, объекты, хранившие в каждом под данным ключом, выдерживают сравнение как равное использование
isEqualTo. -
Объединяет содержание словаря в получатель.
Объявление
C++
virtual bool merge( const OSDictionary *aDictionary);Параметры
aDictionaryСловарь, содержание которого должно быть объединено с получателем.
Возвращаемое значение
trueесли слияние успешно выполняется,falseиначе.Обсуждение
Если существуют ключи
aDictionaryто соответствие вводит словарь получения, тогда объекты в получателе заменяются теми отaDictionary, и замененные объекты выпущены. -
Удаляет ключевую/объектную пару из словаря.
Объявление
C++
virtual void removeObject( const char *aKey);Параметры
aKeyСтруна до, идентифицирующая объект, который будет удален из словаря.
Обсуждение
Удаленная клавиша (внутренне OSSymbol) и объект автоматически отпускается.
-
Удаляет ключевую/объектную пару из словаря.
Объявление
C++
virtual void removeObject( const OSString *aKey);Параметры
aKeyOSString идентификация объекта, который будет удален из словаря.
Обсуждение
Удаленный ключ (не обязательно
aKeyсамостоятельно), и объект автоматически выпущены. -
Удаляет ключевую/объектную пару из словаря.
Объявление
C++
virtual void removeObject( const OSSymbol *aKey);Параметры
aKeyOSSymbol идентификация объекта, который будет удален из словаря.
Обсуждение
Удаленный ключ (не обязательно
aKeyсамостоятельно), и объект автоматически выпущены. -
Архивирует получатель в предоставленный объект OSSerialize.
Объявление
C++
virtual bool serialize( OSSerialize *serializer) const;Параметры
serializerОбъект OSSerialize.
Возвращаемое значение
trueесли сериализация успешно выполняется,falseесли нет. -
Устанавливает инкремент хранения словаря.
Объявление
C++
virtual unsigned int setCapacityIncrement( unsignedincrement);Возвращаемое значение
Новый инкремент хранения словаря, который может отличаться от числа, которое требуют.
Обсуждение
OSDictionary выделяет хранение для ключевых/объектных пар в сети магазинов полного инкремента. Вызывание этой функции сразу не перераспределяет хранение.
-
Хранит объект в словаре под ключом.
Объявление
C++
virtual bool setObject( const char *aKey, const OSMetaClassBase *anObject);Параметры
aKeyСтруна до, идентифицирующая объект, поместила в словаре.
anObjectОбъект, который будет сохранен в словаре. Это автоматически сохраняется.
Возвращаемое значение
trueесли дополнение было успешно,falseиначе.Обсуждение
OSSymbol для
aKeyсоздается внутренне. Объект, уже хранивший подaKeyвыпущен. -
setObject (константа OSString *, константа OSMetaClassBase *) - setObject (константа OSString *, константа OSMetaClassBase *)Хранит объект в словаре под ключом.
Объявление
C++
virtual bool setObject( const OSString *aKey, const OSMetaClassBase *anObject);Параметры
aKeyOSString идентификация объекта поместил в словаре.
anObjectОбъект, который будет сохранен в словаре. Это автоматически сохраняется.
Возвращаемое значение
trueесли дополнение было успешно,falseиначе.Обсуждение
OSSymbol для
aKeyсоздается внутренне. Объект, уже хранивший подaKeyвыпущен. -
setObject (константа OSSymbol *, константа OSMetaClassBase *) - setObject (константа OSSymbol *, константа OSMetaClassBase *)Хранит объект в словаре под ключом.
Объявление
C++
virtual bool setObject( const OSSymbol *aKey, const OSMetaClassBase *anObject);Параметры
aKeyOSSymbol идентификация объекта поместил в словаре. Это автоматически сохраняется.
anObjectОбъект, который будет сохранен в словаре. Это автоматически сохраняется.
Возвращаемое значение
trueесли дополнение было успешно,falseиначе.Обсуждение
Объект, уже хранивший под
aKeyвыпущен. -
Рекурсивно биты опции наборов в словаре и всех дочерних наборах.
Объявление
C++
virtual unsigned setOptions( unsignedoptions, unsignedmask, void *context = 0);Параметры
optionsБитовое поле, значения которого поворачивают опции на (1) или прочь (0).
maskМаска, указывающая, который биты в
optionsизмениться. Передайте 0 для получения целого текущего битового поля опций, не изменяя настроек.contextНеиспользованный.
Возвращаемое значение
Битовое поле опций, как это было перед операцией присвоения.
Обсуждение
Расширения ядра не должны вызывать эту функцию.
Опции дочерних наборов изменяются, только если фактически изменяются опции словаря получения.
-
Создает и инициализирует пустой OSDictionary.
Объявление
C++
static OSDictionary * withCapacity( unsigned intcapacity);Параметры
capacityСпособность исходной системы хранения нового объекта словаря.
Возвращаемое значение
Пустой экземпляр OSDictionary с сохранить количеством 1;
NULLпри отказе.Обсуждение
capacityдолжно быть ненулевым. Новый словарь будет расти по мере необходимости для размещения большего количества ключевых/объектных пар (в отличие от CFMutableDictionary, для которого начальная способность является жестким пределом). -
Создает и инициализирует OSDictionary, заполненный с содержанием другого словаря.
Объявление
C++
static OSDictionary * withDictionary( const OSDictionary *dict, unsigned int capacity = 0);Параметры
dictСловарь, содержание которого будет сохранено в новом экземпляре.
capacityСпособность исходной системы хранения нового объекта словаря. Если 0, способность установлена в число пар ключ/значение в
dict; иначеcapacityдолжно быть больше, чем или равным числу пар ключ/значение вdict.Возвращаемое значение
Экземпляр OSDictionary, содержащего пары ключ/значение
dict, с сохранить количеством 1;NULLпри отказе.Обсуждение
dictдолжен быть не -NULL. Еслиcapacityявляется ненулевым, это должно быть больше, чем или равнымcount. Новый словарь будет расти по мере необходимости для размещения большего количества ключевых/объектных пар (в отличие от CFMutableDictionary, для которого начальная способность является жестким пределом).Ключи и объекты в
dictсохраняются для хранения в новом OSDictionary, не скопированном. -
withObjects (константа OSObject *, константа OSString *, интервал без знака, интервал без знака) - withObjects (константа OSObject *, константа OSString *, интервал без знака, интервал без знака)Создает и инициализирует OSDictionary, заполненный с ключами и предоставленными объектами.
Объявление
C++
static OSDictionary * withObjects( const OSObject *objects[], const OSString *keys[], unsigned intcount, unsigned int capacity = 0);Параметры
objectsМассив C OSMetaClassBase-производных-объектов.
keysМассив C ключей OSString для соответствующих объектов в
objects.countЧисло ключей и объектов, которые будут помещены в словарь.
capacityСпособность исходной системы хранения нового объекта словаря. Если 0,
countиспользуется; иначе это значение должно быть больше, чем или равнымcount.Возвращаемое значение
Экземпляр OSDictionary, содержащего ключевых/объектных пар, если, с сохранить количеством 1;
NULLпри отказе.Обсуждение
objectsиkeysдолжен быть не -NULL, иcountдолжно быть ненулевым. Еслиcapacityявляется ненулевым, это должно быть больше, чем или равнымcount. Новый словарь будет расти по мере необходимости для размещения большего количества ключевых/объектных пар (в отличие от CFMutableDictionary, для которого начальная способность является жестким пределом). -
withObjects (константа OSObject *, константа OSSymbol *, интервал без знака, интервал без знака) - withObjects (константа OSObject *, константа OSSymbol *, интервал без знака, интервал без знака)Создает и инициализирует OSDictionary, заполненный с ключами и предоставленными объектами.
Объявление
C++
static OSDictionary * withObjects( const OSObject *objects[], const OSSymbol *keys[], unsigned intcount, unsigned int capacity = 0);Параметры
objectsМассив C OSMetaClassBase-производных-объектов.
keysМассив C ключей OSSymbol для соответствующих объектов в
objects.countЧисло ключей и объектов, которые будут помещены в словарь.
capacityСпособность исходной системы хранения нового объекта словаря. Если 0,
countиспользуется; иначе это значение должно быть больше, чем или равнымcount.Возвращаемое значение
Экземпляр OSDictionary, содержащего ключевых/объектных пар, если, с сохранить количеством 1;
NULLпри отказе.Обсуждение
objectsиkeysдолжен быть не -NULL, иcountдолжно быть ненулевым. Еслиcapacityявляется ненулевым, это должно быть больше, чем или равнымcount. Новый словарь будет расти по мере необходимости для размещения большего количества ключевых/объектных пар (в отличие от CFMutableDictionary, для которого начальная способность является жестким пределом).
