Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Core Foundation (также называемый CF ) - это интерфейс программирования приложений (API) C в macOS и iOS , представляющий собой сочетание низкоуровневых подпрограмм и функций оболочки . Большинство процедур ядра Foundation следовать определенным именования , которые имеют дело с непрозрачными объектами, например CFDictionaryRef для функций, имена которых начинаются с CFDictionary, и эти объекты часто приводится ссылка подсчитанное (вручную) через и . Внутри Core Foundation формирует базу типов в стандартной библиотеке Objective-C и Carbon API . [1]CFRetainCFRelease

Чаще всего Core Foundation используется для передачи собственных примитивных типов данных, включая необработанные байты , строки Unicode , числа , календарные даты и UUID , а также коллекции, такие как массивы , наборы и словари , в многочисленные подпрограммы macOS C. , в первую очередь те, которые связаны с графическим интерфейсом . На уровне ядра операционной системы Foundation также обеспечивает стандартизированное управление приложениями предпочтения через , расслоение обработку, выполняются петли , межпроцессное взаимодействие черезCFPropertyListCFMachPortи 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

Ссылки [ править ]

  1. ^ смешная_рыба (2006). «Мостик» .
  2. ^ «Плагины и Microsoft COM» . Библиотека разработчика Mac . Корпорация Apple Архивировано из оригинала на 1 сентября 2014 года . Проверено 25 марта 2015 года .
  3. ^ http://opensource.apple.com/source/CF/
  4. ^ Проект OpenCFLite на SourceForge .
  5. ^ "CFLite" . KJams . Проверено 19 февраля 2020 года .
  6. ^ "swift-corelibs-foundation" . GitHub .
  7. ^ "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)