Ссылка CFTree
Вы используете CFTree для создания древовидных структур, представляющих иерархические организации информации. В таких структурах каждый древовидный узел имеет точно одно семенное дерево (за исключением корневого дерева, не имеющего никакого родителя), и может иметь многократные дочерние элементы. Каждому объекту CFTree в структуре связали контекст с ним; этот контекст включает некоторые определенные с помощью программы данные, а также обратные вызовы, воздействующие на те данные. Определенные с помощью программы данные часто используются в качестве основания для определения, где CFTree возражает адаптации в структуре. Все объекты CFTree являются непостоянными.
Вы создаете объект CFTree использование CFTreeCreate
функция. Эта функция берет средство выделения и указатель на a CFTreeGetContext
структура как параметры. CFTreeContext
структура содержит определенные с помощью программы данные, и обратные вызовы должны были описать, сохранить и выпустить те данные. Если Вы не реализуете эти обратные вызовы, то Ваши определенные с помощью программы данные не будут сохранены или выпущены, когда деревья будут добавлены и удалены из родителя.
Каждый объект CFTree имеет родителя и список дочерних элементов, все из которых могут быть NULL
. CFTree обеспечивает функции для добавления и удаления древовидных объектов от древовидной структуры. Используйте CFTreeAppendChild
, CFTreeInsertSibling
, или CFTreePrependChild
функции для добавления деревьев к древовидной структуре, и CFTreeRemove
или CFTreeRemoveAllChildren
функции для удаления деревьев.
В целях управления памятью CFTree может считаться набором. Обычно единственный объект, сохраняющий дочернее дерево, является своим родителем. Обычно, поэтому при удалении дочернего дерева из дерева дочернее дерево уничтожается. Если Вы хотите использовать дочернее дерево после удаления его из его родителя необходимо сохранить дочернее дерево сначала до удаления его.
Выпуск дерева выпускает свои дочерние деревья и все их дочерние деревья (рекурсивно). Отметьте также, что заключительный выпуск дерева (когда сохранять уменьшения количества для обнуления) вызывает все свои дочерние деревья и все их дочерние деревья (рекурсивно), чтобы быть уничтоженным, независимо от их сохранять количества. Выпуск дочернего элемента, который находится все еще в дереве, является поэтому программной ошибкой и может заставить Ваше приложение отказывать.
Можно использовать любую из получить функций (функции, содержащие слово «Get») для получения родителя, дочерних элементов или атрибутов дерева. Например, использовать CFTreeGetChildAtIndex
получить дочерний элемент дерева в указанном расположении. Вместе с другой Базовой Основой «Получают» функции, эти функции не сохраняют возвращающееся дерево. При создании других модификаций к дереву необходимо или сохранить или сделать глубокую копию дочернего дерева возвращенной.
Можно применить функцию ко всем дочерним элементам дерева с помощью CFTreeApplyFunctionToChildren
функция и дочерние элементы вида дерева с помощью CFTreeSortChildren
функция.
-
Создает новый объект CFTree.
Объявление
Swift
func CFTreeCreate(_
allocator
: CFAllocator!, _context
: UnsafePointer<CFTreeContext>) -> CFTree!Objective C
CFTreeRef CFTreeCreate ( CFAllocatorRef allocator, const CFTreeContext *context );
Параметры
allocator
Средство выделения для использования для выделения памяти для нового дерева. Передача
NULL
илиkCFAllocatorDefault
использовать текущее средство выделения по умолчанию.context
CFTreeContext
структура, которая будет копироваться и использоваться в качестве контекста нового дерева. Если сохранить функция будет предоставлена, информационный указатель будет сохранен деревом. Если это значение не является допустимым указателем C на aCFTreeContext
блок размера структуры хранения, результат не определен. Если номер версии хранения не является допустимымCFTreeContext
номер версии, результат не определен.Возвращаемое значение
Новый объект CFTree. Владение соблюдает Создать Правило.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Добавляет новый дочерний элемент к дереву как последнее в его списке дочерних элементов.
Объявление
Swift
func CFTreeAppendChild(_
tree
: CFTree!, _newChild
: CFTree!)Параметры
tree
Дерево, к которому можно добавить
newChild
.newChild
Дочернее дерево для добавления к
tree
. Если этот параметр является деревом, которое уже является дочерним элементом любого другого дерева, поведение не определено.Обсуждение
Когда дочернее дерево добавляется к другому дереву, дочернее дерево сохраняется его новым родителем.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Вставляет новый одноуровневый элемент после данного дерева.
Объявление
Swift
func CFTreeInsertSibling(_
tree
: CFTree!, _newSibling
: CFTree!)Параметры
tree
Дерево, после которого можно вставить
newSibling
.tree
должен иметь родителя.newSibling
Одноуровневый элемент для добавления.
newSibling
не должен иметь родителя.Обсуждение
Когда дочернее дерево добавляется к другому дереву, дочернее дерево сохраняется его новым родителем.
Если Вы хотите управлять существующей древовидной структурой с тех пор
newSibling
не должен иметь родителя, необходимо удалить дерево из его родителя для перемещения его в новую позицию. Если Вы делаете это, необходимо сохранить дерево перед фактическим удалением его из его родителя (см. CFTreeRemove).Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Удаляет все дочерние элементы дерева.
Объявление
Swift
func CFTreeRemoveAllChildren(_
tree
: CFTree!)Objective C
void CFTreeRemoveAllChildren ( CFTreeRef tree );
Параметры
tree
Дерево для изменения.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Добавляет новый дочерний элемент к указанному дереву как первое в его списке дочерних элементов.
Объявление
Swift
func CFTreePrependChild(_
tree
: CFTree!, _newChild
: CFTree!)Параметры
tree
Дерево, к которому можно добавить
newChild
.newChild
Дочернее дерево для добавления к
tree
. Это значение не должно быть дочерним элементом другого дерева.Обсуждение
Когда дочернее дерево добавляется к другому дереву, дочернее дерево сохраняется его новым родителем.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Удаляет дерево из его родителя.
Объявление
Swift
func CFTreeRemove(_
tree
: CFTree!)Objective C
void CFTreeRemove ( CFTreeRef tree );
Параметры
tree
Дерево для удаления из его родителя.
Обсуждение
Когда дочернее дерево удалено из его родителя, родитель выпускает его. Если Вы хотите использовать дочерний элемент после удаления его необходимо гарантировать, чтобы Вы сохранили его прежде, чем удалить его из его родителя.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Заменяет контекст дерева путем выпуска старого информационного указателя и сохранения нового.
Объявление
Swift
func CFTreeSetContext(_
tree
: CFTree!, _context
: UnsafePointer<CFTreeContext>)Objective C
void CFTreeSetContext ( CFTreeRef tree, const CFTreeContext *context );
Параметры
tree
Дерево для изменения.
context
CFTreeContext
структура, которая будет копироваться и использоваться в качестве контекста нового дерева. Если сохранить функция будет предоставлена, информационный указатель будет сохранен деревом. Если это значение не является допустимым указателем C на aCFTreeContext
блок размера структуры хранения, результат не определен. Если номер версии хранения не является допустимымCFTreeContext
номер версии, результат не определен.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Сортирует непосредственные дочерние элементы дерева с помощью указанной функции компаратора.
Объявление
Swift
func CFTreeSortChildren(_
tree
: CFTree!, _comparator
: CFComparatorFunction, _context
: UnsafeMutablePointer<Void>)Objective C
void CFTreeSortChildren ( CFTreeRef tree, CFComparatorFunction comparator, void *context );
Параметры
tree
Дерево к виду.
comparator
Функция с компаратором функционирует подпись типа, использующаяся в работе вида для сравнения дочерних элементов дерева. Дочерние элементы дерева сортируются от наименьшего количества до самого большого согласно этой функции.
context
Определенное с помощью программы значение размера указателя, которое передается функции компаратора, но иначе не использовано этой функцией.
Обсуждение
Обратите внимание на то, что компаратор только управляет одним уровнем глубоко и не воздействует на потомков, далее удаленных, чем непосредственные дочерние элементы древовидного узла.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает корневое дерево данного дерева.
Объявление
Swift
func CFTreeFindRoot(_
tree
: CFTree!) -> CFTree!Параметры
tree
Дерево для исследования.
Возвращаемое значение
Корень
tree
где корень определяется как дерево без родителя. Владение соблюдает Получить Правило.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает дочерний элемент дерева в указанном индексе.
Объявление
Swift
func CFTreeGetChildAtIndex(_
tree
: CFTree!, _idx
: CFIndex) -> CFTree!Параметры
tree
Дерево для исследования.
idx
Индекс дочернего элемента получает. Значение должно быть меньше, чем число дочерних элементов в
tree
.Возвращаемое значение
Дочернее дерево в
idx
. Владение соблюдает Получить Правило.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает число дочерних элементов в дереве.
Объявление
Swift
func CFTreeGetChildCount(_
tree
: CFTree!) -> CFIndexПараметры
tree
Дерево для исследования.
Возвращаемое значение
Число дочерних элементов в
tree
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Заполняет буфер дочерними элементами от дерева.
Объявление
Swift
func CFTreeGetChildren(_
tree
: CFTree!, _children
: UnsafeMutablePointer<Unmanaged<CFTree>?>)Параметры
tree
Дерево для исследования.
children
Массив C значений размера указателя, чтобы быть заполненным дочерними элементами от
tree
. Это значение должно быть допустимым указателем на массив C, по крайней мере, размера числа дочерних элементов вtree
. ИспользуйтеCFTreeGetChildCount
функция для получения числа дочерних элементов вtree
. Вы ответственны за сохранение и выпуск возвращенных объектов по мере необходимости.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает контекст указанного дерева.
Объявление
Swift
func CFTreeGetContext(_
tree
: CFTree!, _context
: UnsafeMutablePointer<CFTreeContext>)Objective C
void CFTreeGetContext ( CFTreeRef tree, CFTreeContext *context );
Параметры
tree
Дерево для исследования.
context
CFTreeContext
структура, чтобы быть заполненным в контекстом указанного дерева. Это значение должно быть допустимым указателем C на aCFTreeContext
блок размера структуры хранения. Если номер версии хранения не является допустимымCFTreeContext
номер версии структуры, результат не определен.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает первый дочерний элемент дерева.
Объявление
Swift
func CFTreeGetFirstChild(_
tree
: CFTree!) -> CFTree!Параметры
tree
Дерево для исследования.
Возвращаемое значение
Первый дочерний элемент
tree
. Владение соблюдает Получить Правило.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает следующий одноуровневый элемент, смежный с данным деревом, в дочернем списке родителя.
Объявление
Swift
func CFTreeGetNextSibling(_
tree
: CFTree!) -> CFTree!Параметры
tree
Дерево для исследования.
Возвращаемое значение
Следующий одноуровневый элемент, смежный с
tree
. Владение соблюдает Получить Правило.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает родителя данного дерева.
Объявление
Swift
func CFTreeGetParent(_
tree
: CFTree!) -> CFTree!Параметры
tree
Дерево для исследования.
Возвращаемое значение
Родитель
tree
. Владение соблюдает Получить Правило.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Вызывает функцию один раз для каждого непосредственного дочернего элемента дерева.
Объявление
Swift
func CFTreeApplyFunctionToChildren(_
tree
: CFTree!, _applier
: CFTreeApplierFunction, _context
: UnsafeMutablePointer<Void>)Objective C
void CFTreeApplyFunctionToChildren ( CFTreeRef tree, CFTreeApplierFunction applier, void *context );
Параметры
tree
Дерево для работы на.
applier
Функция обратного вызова для вызова один раз для каждого дочернего элемента в
tree
. Функция должна быть в состоянии примениться ко всем значениям в дереве.context
Определенное с помощью программы значение размера указателя, которое передается функции applier, но иначе не использовано этой функцией.
Обсуждение
Обратите внимание на то, что applier только управляет одним уровнем глубоко — это не воздействует на потомков, далее удаленных, чем непосредственные дочерние элементы дерева. Если дерево является непостоянным, небезопасно для прикладной функции изменить содержание дерева.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает идентификатор типа непрозрачного типа CFTree.
Возвращаемое значение
Идентификатор типа непрозрачного типа CFTree.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Тип функции обратного вызова, используемой CFTree, применяет функцию.
Объявление
Swift
typealias CFTreeApplierFunction = CFunctionPointer<((UnsafePointer<Void>, UnsafeMutablePointer<Void>) -> Void)>
Objective C
typedef void (*CFTreeApplierFunction) ( const void *value, void *context );
Параметры
value
Текущий дочерний элемент выполняющегося с помощью итераций дерева.
context
Определенный с помощью программы параметр контекста, переданный функции applier.
Обсуждение
Этот обратный вызов используется
CFTreeApplyFunctionToChildren
функция applier.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Функция обратного вызова раньше предоставляла описание определенного с помощью программы информационного указателя.
Объявление
Swift
typealias CFTreeCopyDescriptionCallBack = CFunctionPointer<((UnsafePointer<Void>) -> Unmanaged<CFString>!)>
Objective C
typedef CFStringRef (*CFTreeCopyDescriptionCallBack) ( const void *info );
Параметры
info
Предоставленный программу информационный указатель обеспечил в a
CFTreeContext
структура.Возвращаемое значение
Текстовое описание
info
. Вызывающая сторона ответственна за выпуск этого объекта.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Функция обратного вызова раньше выпускала ранее сохраненный определенный с помощью программы информационный указатель.
Объявление
Swift
typealias CFTreeReleaseCallBack = CFunctionPointer<((UnsafePointer<Void>) -> Void)>
Objective C
typedef void (*CFTreeReleaseCallBack) ( const void *info );
Параметры
info
Предоставленный программу информационный указатель обеспечил в a
CFTreeContext
структура.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Функция обратного вызова раньше сохраняла определенный с помощью программы информационный указатель.
Объявление
Swift
typealias CFTreeRetainCallBack = CFunctionPointer<((UnsafePointer<Void>) -> UnsafePointer<Void>)>
Objective C
typedef const void *(*CFTreeRetainCallBack) ( const void *info );
Параметры
info
Предоставленный программу информационный указатель обеспечил в a
CFTreeContext
структура.Возвращаемое значение
Значение для использования каждый раз, когда информационный указатель сохраняется, который обычно является
info
если различное значение должно использоваться, параметр передал этому обратному вызову, но может быть различным значением.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Структура, содержащая определенные с помощью программы данные и обратные вызовы для объекта CFTree.
Объявление
Swift
struct CFTreeContext { var version: CFIndex var info: UnsafeMutablePointer<Void> var retain: CFTreeRetainCallBack var release: CFTreeReleaseCallBack var copyDescription: CFTreeCopyDescriptionCallBack }
Objective C
struct CFTreeContext { CFIndex version; void *info; CFTreeRetainCallBack retain; CFTreeReleaseCallBack release; CFTreeCopyDescriptionCallBack copyDescription; }; typedef struct CFTreeContext CFTreeContext;
Поля
version
Номер версии типа структуры, передаваемого в в качестве параметра функции создания CFTree. Эта структура является версией
0
.info
Указатель C на определенный с помощью программы блок данных, называемый информационным указателем.
retain
Обратный вызов раньше сохранял
info
поле. Если этот параметр не является указателем на функцию корректного прототипа, поведение не определено. Это значение может бытьNULL
.release
Обратный вызов, привыкший к выпуску a ранее, сохраняется
info
поле. Если этот параметр не является указателем на функцию корректного прототипа, поведение не определено. Это значение может бытьNULL
.copyDescription
Обратный вызов раньше предоставлял описание
info
поле.Доступность
Доступный в OS X v10.0 и позже.
-
Ссылка на объект CFTree.
Объявление
Swift
typealias CFTreeRef = CFTree
Objective C
typedef struct __CFTree *CFTreeRef;
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.