Разработчики) | Apple Inc. |
---|---|
Тип | Системная библиотека |
Лицензия | APSL 2.0 |
Веб-сайт | developer.apple.com |
Core Foundation (также называемый CF ) - это интерфейс программирования приложений (API) C в macOS и iOS , представляющий собой сочетание низкоуровневых подпрограмм и функций оболочки . Большинство процедур ядра Foundation следовать определенным именования , которые имеют дело с непрозрачными объектами, например CFDictionaryRef для функций, имена которых начинаются с CFDictionary, и эти объекты часто приводится ссылка подсчитанное (вручную) через и . Внутри Core Foundation формирует базу типов в стандартной библиотеке Objective-C и Carbon API . [1]CFRetain
CFRelease
Чаще всего Core Foundation используется для передачи собственных примитивных типов данных, включая необработанные байты , строки Unicode , числа , календарные даты и UUID , а также коллекции, такие как массивы , наборы и словари , в многочисленные подпрограммы macOS C. , в первую очередь те, которые связаны с графическим интерфейсом . На уровне ядра операционной системы Foundation также обеспечивает стандартизированное управление приложениями предпочтения через , расслоение обработку, выполняются петли , межпроцессное взаимодействие черезCFPropertyList
CFMachPort
и CFNotificationCenter
, а также через диалоговое окно сообщения основного графического интерфейса пользователяCFUserNotification
.
Другие части API включают служебные программы и оболочки для существующих API для простоты использования. Утилита процедуры выполнять такие действия , как файловой системы и сети ввода / вывода через CFReadStream
, CFWriteStream
и CFURL
и порядком байтов перевода (Byte Order Utilities). Некоторые примеры программ-оболочек включают в себя подпрограммы-оболочки для сокетов Unix в Core Foundation, API CFSocket.
Некоторые типы в 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]
Swift Corelib Foundation, запасная версия Foundation Kit для языка программирования Swift для платформ, отличных от Apple, содержит почти полную версию Core Foundation, выпущенную под лицензией Apache License 2.0 . [6]
GNUstep включает версию Core Foundation под названием «libs-corebase». [7]
См. Также [ править ]
- GLib - эквивалент GNOME
Ссылки [ править ]
- ^ смешная_рыба (2006). «Мостик» .
- ^ «Плагины и Microsoft COM» . Библиотека разработчика Mac . Корпорация Apple Архивировано из оригинала на 1 сентября 2014 года . Проверено 25 марта 2015 года .
- ^ http://opensource.apple.com/source/CF/
- ^ Проект OpenCFLite на SourceForge .
- ^ "CFLite" . KJams . Проверено 19 февраля 2020 года .
- ^ "swift-corelibs-foundation" . GitHub .
- ^ "gnustep / libs-corebase: Библиотека GNUstep CoreBase - это библиотека неграфических объектов C общего назначения" . GitHub . GNUstep. 19 ноября 2019.
Внешние ссылки [ править ]
- Ссылка на Core Foundation на сайте Apple Developer Connection
- OpenCFLite на SourceForge
- CFLite, включая CFNetwork, работает в 64- битном режиме , использует LibreSSL (TLS 1.1, 1.2)