Core Foundation (también llamado CF ) es una interfaz de programación de aplicaciones (API) C en macOS e iOS , y es una combinación de rutinas de bajo nivel y funciones contenedoras . La mayoría de las rutinas de Core Foundation siguen una cierta convención de nomenclatura que trata con objetos opacos, por ejemplo, CFDictionaryRef para funciones cuyos nombres comienzan con CFDictionary, y estos objetos a menudo se cuentan por referencia (manualmente) hasta y . Internamente, Core Foundation forma la base de los tipos en la biblioteca estándar de Objective-C y Carbon API . [1]CFRetain
CFRelease
El uso más frecuente de Core Foundation es para 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 macOS C. , principalmente aquellos que están relacionados con la GUI . En el nivel del sistema operativo, Core Foundation también proporciona administración de preferencias de aplicaciones estandarizadas a través de manejo de paquetes , bucles de ejecución , comunicación entre procesos a través deCFPropertyList
CFMachPort
y , y un cuadro de diálogo de mensaje de interfaz gráfica de usuarioCFNotificationCenter
básico a través de .CFUserNotification
Otras partes de la API incluyen rutinas de utilidad y contenedores alrededor de las API existentes para facilitar su uso. Las rutinas de utilidad realizan acciones tales como sistema de archivos y E/S de red a través de , y traducción endianness (utilidades de orden de bytes). Algunos ejemplos de rutinas contenedoras incluyen aquellas para las rutinas contenedoras de Core Foundation para sockets Unix, la API CFSocket.CFReadStream
CFWriteStream
CFURL
Algunos tipos en Core Foundation son "puenteados sin cargo" o intercambiables con un yeso simple, con los de sus contrapartes de Foundation Kit . Por ejemplo, uno podría crear un CFDictionaryRef
tipo Core Foundation, y luego simplemente usar una conversión de C estándar para convertirlo a su contraparte de Objective-C NSDictionary *
, y luego usar los métodos de 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]