Настройка набора
Базовая Основа разрешает Вам настраивать, как наборы воздействуют на значения, которые они содержат. При создании объекта коллекции, необходимо передать в инициализированной структуре, включающей указатели на функции обратного вызова, определяющие большую часть поведения набора. Тип структуры, переданной в для древовидных объектов, отличается от структуры, переданной в для других типов объектов коллекции.
Для массивов, словарей, наборов и сумок, Вы передаете указатель на структуру обратного вызова (например, CFArrayCallBacks
) в функцию создания. Эта структура содержит указатели на функции, вызывающиеся Базовой Основой, чтобы сохранить, выпустить, описать и сравнить значения, помещенные в набор. Идеально поведение набора состоит в том, чтобы так или иначе сохранить значение, помещенное в него так, чтобы, в случае, если код, которые помещают значение там позже, освобождает его, значение все еще осталось в наборе. (Можно выбрать не сохранять значения, помещенные в набор, но это может привести к неопределенному поведению в программе.) Набор должен выпустить значения, удаленные из него, если бы они были ранее сохранены или освобождают их, если они были ранее выделены. Обратный вызов, сравнивающий значения, используется в сортировке и поиске операций. Обратный вызов, описывающий значения, вызывается CFCopyDescription
(который вызывается поочередно CFShow
) распечатать отладочную информацию к консоли.
Для деревьев Вы передаете инициализированную структуру контекста (CFTreeContext
) в функцию создания. Эта структура имеет указатели на те же виды функций, как структура обратного вызова — сохраняет, выпускает, сравнивает и описывает — но эти функции воздействуют на info
элемент структуры контекста, содержащей или указывающей на данные, связанные с деревом.
Можно присвоиться NULL
к обратному вызову или указателю функции контекста, если работа не требуется для значений в наборе (таких как сохранение определенных типов данных). Кроме того, каждый объект коллекции создал со структурой обратного вызова — массивы, словари, наборы, и сумки — позволяют Вам указывать предопределенную структуру, инициализированную с обратными вызовами по умолчанию, когда набор содержит Базовые объекты Основы.