Core Foundation (также называемый CF ) — это интерфейс прикладного программирования (API) на языке C , написанный Apple Inc. для своих операционных систем и представляющий собой смесь низкоуровневых подпрограмм и функций-оболочек . Большинство подпрограмм Core Foundation следуют определенному соглашению об именах, касающемуся непрозрачных объектов, например CFDictionaryRef для функций, имена которых начинаются с CFDictionary, и эти объекты часто подсчитываются ( вручную) через и . Внутри Core Foundation формирует основу типов стандартной библиотеки Objective-C и Carbon API . [1]CFRetain
CFRelease
Наиболее распространенное использование Core Foundation — передача собственных примитивных типов данных, включая необработанные байты , строки Unicode , числа , календарные даты и UUID , а также коллекций, таких как массивы , наборы и словари , многочисленным подпрограммам MacOS C. , в первую очередь те, которые связаны с графическим интерфейсом . На уровне операционной системы Core Foundation также обеспечивает стандартизированное управление предпочтениями приложений с помощью , обработку пакетов , циклы выполнения , межпроцессное взаимодействие с помощью и , а также базовый диалог сообщений графического интерфейса пользователя с помощью .CFPropertyList
CFMachPort
CFNotificationCenter
CFUserNotification
Другие части API включают служебные процедуры и оболочки существующих API для простоты использования. Служебные процедуры выполняют такие действия, как файловая система и сетевой ввод -вывод посредством преобразования порядка байтовCFReadStream
, байтов и CFWriteStream
порядка байтов . Некоторые примеры подпрограмм-оболочек включают в себя подпрограммы-оболочки Core Foundation для сокетов Unix, CFSocket API.CFURL
Некоторые типы в Core Foundation являются «бесплатными мостами» или взаимозаменяемы с помощью простого приведения к типам их аналогов из Foundation Kit . Например, можно создать CFDictionaryRef
тип Core Foundation, а затем просто использовать стандартное приведение C для преобразования его в аналог Objective-C, NSDictionary *
а затем использовать нужные методы Objective-C для этого объекта, как обычно.
Core Foundation имеет модель подключаемого модуля ( CFPlugin ), основанную на объектной модели компонентов Microsoft . [2]
Раньше Apple выпускала большую часть CF как проект с открытым исходным кодом под названием CFLite, который можно использовать для написания кроссплатформенных приложений для macOS, Linux и Windows . [3]
Сторонняя реализация с открытым исходным кодом под названием OpenCFLite расширяет Apple CFLite для создания в 32-битных средах Windows и Linux . Его поддерживает один из разработчиков WebKit , но к 2015 году его работа была остановлена. [4] Караоке-платформа KJams поддерживает форк с 2017 года. Эта версия, созданная программистом Дэвидом М. Коттером, поддерживает 64-битные системы и имеет реализацию CFNetwork. с TLS на основе LibreSSL . [5] Ответвление OpenCFLite было создано Грантом Эриксоном (первоначальным соавтором Брента Фулгэма над версией SourceForge) в 2021 году [6] с сопутствующим портом части CFHost
CFNetwork под названием OpenCFNetwork. [7]
Swift Corelib Foundation, резервная версия Foundation Kit для языка программирования Swift для платформ сторонних производителей, содержит почти полную версию Core Foundation, выпущенную под лицензией Apache License 2.0 . [8]
GNUstep включает версию Core Foundation под названием «libs-corebase». [9]