Соглашения о присвоении имен
Главное соглашение интерфейса программирования в Базовой Основе состоит в том, чтобы использовать имя непрозрачного типа, который является самым тесно связанным с символом как префикс символа. Для функций этот префикс идентифицирует не только тип, которому функция «принадлежит», но и обычно тип объекта, который является целью действия функции. (Исключение к этому соглашению является константами, помещающими «k» перед префиксом типа.) Вот несколько примеров от заголовочных файлов:
/* from CFDictionary.h */ |
CF_EXPORT CFIndex CFDictionaryGetCountOfKey(CFDictionaryRef dict, const void *key); |
/* from CFString.h */ |
typedef UInt32 CFStringEncoding; |
/* from CFCharacterSet.h */ |
typedef enum { |
kCFCharacterSetControl = 1, |
kCFCharacterSetWhitespace, |
kCFCharacterSetWhitespaceAndNewline, |
kCFCharacterSetDecimalDigit, |
kCFCharacterSetLetter, |
kCFCharacterSetLowercaseLetter, |
kCFCharacterSetUppercaseLetter, |
kCFCharacterSetNonBase, |
kCFCharacterSetDecomposable, |
kCFCharacterSetAlphaNumeric, |
kCFCharacterSetPunctuation, |
kCFCharacterSetIllegal |
} CFCharacterSetPredefinedSet; |
Базовая Основа имеет несколько соглашений интерфейса программирования в дополнение к связанным с непрозрачными типами и управлением памятью.
Существует важное различие между, Получают, и Копия и Создают, на имена функций это возвращаемые значения. При использовании Получить функции Вы не можете быть уверены в продолжительности жизни возвращенного объекта. Для обеспечения персистентности такого объекта, можно сохранить его (использование функции CFRetain) или, в некоторых случаях, скопировать его. Если Вы используете Копию или Создаете функцию, Вы ответственны за выпуск объекта (использование функции CFRelease). Для получения дополнительной информации см. Руководство по программированию управления памятью для Базовой Основы.
Некоторые Базовые объекты Основы имеют свои собственные соглашения о присвоении имен наложить непротиворечивость среди общих операций. Например, наборы встраивают следующие глаголы в имена функций для значения определенных операций на элементах набора:
«Добавьте» означает, “добавляют, если отсутствующий, ничего не сделайте если настоящее” (если uniquing набор).
«Замена» означает “замену, если настоящее, ничего не сделайте если отсутствующий”.
«Набор» означает, “добавляют, если отсутствующий, замена если настоящее”.
«Удалите» означает, “удаляют, если настоящее, ничего не сделайте если отсутствующий”.
CFIndex
тип используется для индекса, количества, длины, и параметров размера и возвращаемых значений. Целочисленное значение, которое представляет этот тип (в настоящее время 32 бита) может расти в течение долгого времени, как растет размер адреса процессора. На архитектуре, где размеры указателя отличаются скажем 64 бита,CFIndex
как могли бы объявлять, был бы 64 бита, независимые от размераint
. При помощиCFIndex
для переменных, взаимодействующих с параметрами Core Foundation того же типа, Вы гарантируете более высокую степень исходной совместимости для Вашего кода.Некоторые Базовые заголовочные файлы Основы, может казаться, определяют непрозрачные типы, но фактически содержат функции удобства, не связанные с определенным типом. Рассматриваемый вопрос
CFPropertyList.h
. CFPropertyList является типом заполнителя для любого из типов списка свойств: CFString, CFData, CFBoolean, CFNumber, CFDate, CFArray и CFDictionary.Если не указано иное все параметрами ссылки предназначенные для возврата значений могут принять
NULL
. Это указывает, что вызывающая сторона не интересуется тем возвращаемым значением.