Core Foundation (también llamada CF ) es una interfaz de programación de aplicaciones (API) de C escrita por Apple Inc. para sus sistemas operativos , y es una mezcla de rutinas de bajo nivel y funciones contenedoras . La mayoría de las rutinas de Core Foundation siguen una determinada convención de nomenclatura que se ocupa de objetos opacos, por ejemplo CFDictionaryRef para funciones cuyos nombres comienzan con CFDictionary, y estos objetos suelen contarse (manualmente) mediante y . Internamente, Core Foundation forma la base de los tipos en la biblioteca estándar de Objective-C y la API Carbon . [1]CFRetain
CFRelease
El uso más frecuente de Core Foundation es pasar sus propios tipos primitivos de datos, incluidos bytes sin formato , cadenas Unicode , números , fechas de calendario y UUID , así como colecciones como matrices , conjuntos y diccionarios , a numerosas rutinas de macOS C , principalmente aquellas relacionadas con la GUI . A nivel de sistema operativo, Core Foundation también proporciona una gestión de preferencias de aplicaciones estandarizadas a través de , manejo de paquetes , bucles de ejecución , comunicación entre procesos a través de y , y un cuadro de diálogo de mensajes de interfaz gráfica de usuario básica a través de .CFPropertyList
CFMachPort
CFNotificationCenter
CFUserNotification
Otras partes de la API incluyen rutinas de utilidad y envoltorios en torno a las API existentes para facilitar su uso. Las rutinas de utilidad realizan acciones como E/S del sistema de archivos y de red a través de , , y y traducción de orden de bytes (Utilidades de orden de bytes). Algunos ejemplos de rutinas de envoltorio incluyen aquellas para las rutinas de envoltorio de Core Foundation para sockets Unix, la API CFSocket.CFReadStream
CFWriteStream
CFURL
Algunos tipos de Core Foundation son "puenteados sin cargo" o intercambiables con una conversión simple con los de sus contrapartes de Foundation KitCFDictionaryRef
. Por ejemplo, uno podría crear un tipo de Core Foundation y luego simplemente usar una conversión estándar de C para convertirlo a su contraparte de Objective-C, NSDictionary *
y luego usar los métodos Objective-C deseados en ese objeto como lo haría normalmente.
Core Foundation tiene un modelo de complemento ( CFPlugin ) que se basa en el Modelo de objetos componentes de Microsoft . [2]
Apple solía lanzar la mayor parte de CF como un proyecto de código abierto llamado CFLite que se puede usar para escribir aplicaciones multiplataforma para macOS, Linux y Windows . [3]
Una implementación de código abierto de terceros llamada OpenCFLite extiende el CFLite de Apple para la creación en entornos Windows y Linux de 32 bits . Es mantenida por uno de los desarrolladores de WebKit , pero se estancó en 2015. [4] La plataforma de karaoke KJams mantiene una bifurcación desde 2017. Esta versión, de su programador David M. Cotter, admite sistemas de 64 bits y tiene una implementación de CFNetwork con TLS basado en LibreSSL . [5] Grant Erickson (un colaborador original de Brent Fulgham en la versión de SourceForge) creó una bifurcación de OpenCFLite en 2021 [6] con un puerto complementario de la CFHost
parte de CFNetwork, como OpenCFNetwork. [7]
Swift Corelib Foundation, una versión alternativa del Foundation Kit para el lenguaje de programación Swift para plataformas que no son de Apple, contiene una versión casi completa de Core Foundation publicada bajo la licencia Apache 2.0 . [8]
GNUstep incluye una versión de Core Foundation llamada "libs-corebase". [9]