Ссылка 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использовать текущее средство выделения по умолчанию.contextCFTreeContextструктура, которая будет копироваться и использоваться в качестве контекста нового дерева. Если сохранить функция будет предоставлена, информационный указатель будет сохранен деревом. Если это значение не является допустимым указателем 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Дерево для изменения.
contextCFTreeContextструктура, которая будет копироваться и использоваться в качестве контекста нового дерева. Если сохранить функция будет предоставлена, информационный указатель будет сохранен деревом. Если это значение не является допустимым указателем 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Дерево для исследования.
contextCFTreeContextструктура, чтобы быть заполненным в контекстом указанного дерева. Это значение должно быть допустимым указателем 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 = CFTreeObjective C
typedef struct __CFTree *CFTreeRef;Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
