Ссылки на объект
Вы обращаетесь к Базовым объектам Основы (непрозрачные типы) через ссылки. В каждом заголовочном файле для непрозрачного типа Вы заметите строку или два подобных следующему:
typedef const struct __CFArray * CFArrayRef; |
typedef struct __CFArray * CFMutableArrayRef; |
Объявления, такие как они являются ссылками указателя на неизменные и непостоянные версии (частной) структуры, определяющей непрозрачный тип. Параметры и возвращаемые значения многих Базовых функций Основы берут тип этих ссылок на объект и никогда a typedef
из частной структуры. Например:
CFStringRef CFStringCreateByCombiningStrings(CFAllocatorRef alloc, CFArrayRef array, CFStringRef separatorString); |
Посмотрите Варианты Объектов для больше на неизменных, непостоянных, и других вариантах непрозрачных текстовых объектов.
Каждая Базовая Основа непрозрачный тип определяет уникальный идентификатор типа для своих объектов, как в CFArrayRef
выше для объектов CFArray. Идентификатор типа является целым числом типа CFTypeID
это идентифицирует непрозрачный тип, которому «принадлежит» Базовый объект Основы. Вы используете идентификаторы типов в различных контекстах, такой как тогда, когда Вы воздействуете на неоднородные наборы. Базовая Основа обеспечивает программируемые интерфейсы для получения и оценки идентификаторов типов.
Кроме того, Базовая Основа определяет универсальный тип ссылки на объект, CFTypeRef
, аналогичный корневому классу на некоторых языках объектно-ориентированного программирования. Эта общая ссылка служит типом заполнителя для параметров и возвратила значения полиморфных функций, которые могут взять ссылки на любой Базовый объект Основы. Посмотрите Полиморфные функции для больше на этом предмете. См. Руководство по программированию управления памятью для Базовой Основы для проблем, касающихся управления памятью при использовании ссылок на объект.