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 int
newCapacity
);Параметры
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 int
capacity
);Параметры
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 int
count
, 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 int
count
, 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
);Параметры
aKey
OSString идентификация объекта, который будет удален из словаря.
Обсуждение
Удаленный ключ (не обязательно
aKey
самостоятельно), и объект автоматически выпущены. -
Удаляет ключевую/объектную пару из словаря.
Объявление
C++
virtual void removeObject( const OSSymbol *
aKey
);Параметры
aKey
OSSymbol идентификация объекта, который будет удален из словаря.
Обсуждение
Удаленный ключ (не обязательно
aKey
самостоятельно), и объект автоматически выпущены. -
Архивирует получатель в предоставленный объект OSSerialize.
Объявление
C++
virtual bool serialize( OSSerialize *
serializer
) const;Параметры
serializer
Объект OSSerialize.
Возвращаемое значение
true
если сериализация успешно выполняется,false
если нет. -
Устанавливает инкремент хранения словаря.
Объявление
C++
virtual unsigned int setCapacityIncrement( unsigned
increment
);Возвращаемое значение
Новый инкремент хранения словаря, который может отличаться от числа, которое требуют.
Обсуждение
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
);Параметры
aKey
OSString идентификация объекта поместил в словаре.
anObject
Объект, который будет сохранен в словаре. Это автоматически сохраняется.
Возвращаемое значение
true
если дополнение было успешно,false
иначе.Обсуждение
OSSymbol для
aKey
создается внутренне. Объект, уже хранивший подaKey
выпущен. -
setObject (константа OSSymbol *, константа OSMetaClassBase *) - setObject (константа OSSymbol *, константа OSMetaClassBase *)
Хранит объект в словаре под ключом.
Объявление
C++
virtual bool setObject( const OSSymbol *
aKey
, const OSMetaClassBase *anObject
);Параметры
aKey
OSSymbol идентификация объекта поместил в словаре. Это автоматически сохраняется.
anObject
Объект, который будет сохранен в словаре. Это автоматически сохраняется.
Возвращаемое значение
true
если дополнение было успешно,false
иначе.Обсуждение
Объект, уже хранивший под
aKey
выпущен. -
Рекурсивно биты опции наборов в словаре и всех дочерних наборах.
Объявление
C++
virtual unsigned setOptions( unsigned
options
, unsignedmask
, void *context = 0);Параметры
options
Битовое поле, значения которого поворачивают опции на (1) или прочь (0).
mask
Маска, указывающая, который биты в
options
измениться. Передайте 0 для получения целого текущего битового поля опций, не изменяя настроек.context
Неиспользованный.
Возвращаемое значение
Битовое поле опций, как это было перед операцией присвоения.
Обсуждение
Расширения ядра не должны вызывать эту функцию.
Опции дочерних наборов изменяются, только если фактически изменяются опции словаря получения.
-
Создает и инициализирует пустой OSDictionary.
Объявление
C++
static OSDictionary * withCapacity( unsigned int
capacity
);Параметры
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 int
count
, 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 int
count
, 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, для которого начальная способность является жестким пределом).