Kernfundament - Core Foundation
Entwickler | Apple Inc. |
---|---|
Typ | System - Bibliothek |
Lizenz | APSL 2.0 |
Webseite | entwickler.apple.com |
Core Foundation (auch CF genannt ) ist eine C- Anwendungsprogrammierschnittstelle (API) in macOS und iOS und ist eine Mischung aus Low-Level-Routinen und Wrapper-Funktionen . Die meisten Core Foundation-Routinen folgen einer bestimmten Namenskonvention, die mit undurchsichtigen Objekten umgehen, zum Beispiel CFDictionaryRef für Funktionen, deren Namen mit CFDictionary beginnen, und diese Objekte werden oft (manuell) durch und referenziert . Intern bildet Core Foundation die Basis der Typen in der Objective-C- Standardbibliothek und der Carbon API .
CFRetain
CFRelease
Die häufigste Verwendung von Core Foundation besteht darin, seine eigenen primitiven Datentypen, einschließlich Rohbytes , Unicode- Strings , Zahlen , Kalenderdaten und UUIDs sowie Sammlungen wie Arrays , Sets und Wörterbücher , an zahlreiche macOS C- Routinen zu übergeben , hauptsächlich solche, die GUI-bezogen sind . Auf Betriebssystemebene bietet Core Foundation außerdem eine standardisierte Verwaltung von Anwendungspräferenzen durch CFPropertyList
, Bundle- Handhabung, Laufschleifen , Kommunikation zwischen Prozessen durch CFMachPort
und CFNotificationCenter
und einen grundlegenden grafischen Benutzerschnittstellen- Meldungsdialog durch CFUserNotification
.
Andere Teile der API umfassen Dienstprogrammroutinen und Wrapper um vorhandene APIs, um die Verwendung zu erleichtern. Utility - Routinen ausführen solche Aktionen wie Dateisystem und Netzwerk - I / O durch CFReadStream
, CFWriteStream
und CFURL
und endianness Übersetzung (Byte Order Dienstprogramme). Einige Beispiele für Wrapper-Routinen umfassen diejenigen für die Wrapper-Routinen von Core Foundation für Unix-Sockets, die CFSocket-API.
Einige Typen in Core Foundation sind "gebührenfrei überbrückt" oder mit einem einfachen Abguss mit denen ihrer Foundation Kit- Gegenstücke austauschbar . Beispielsweise könnte man einen CFDictionaryRef
Core Foundation-Typ erstellen und später einfach eine Standard-C-Umwandlung verwenden, um ihn in sein Objective-C-Gegenstück zu konvertieren NSDictionary *
, und dann die gewünschten Objective-C-Methoden für dieses Objekt wie gewohnt verwenden.
Core Foundation verfügt über ein Plug-in-Modell ( CFPlugin ), das auf dem Microsoft Component Object Model basiert .
Open-Source-Verfügbarkeit
Apple hat den größten Teil von CF als Open-Source- Projekt namens CFLite veröffentlicht, mit dem plattformübergreifende Anwendungen für macOS, Linux und Windows geschrieben werden können .
Eine Open-Source-Implementierung eines Drittanbieters namens OpenCFLite erweitert die Apple CFLite für den Aufbau auf 32-Bit- Windows- und Linux- Umgebungen. Es wird von einem der WebKit- Entwickler gepflegt , wurde aber 2015 eingestellt. Die Karaoke-Plattform KJams unterhält seit 2017 einen Fork. Diese Version von seinem Programmierer David M. Cotter unterstützt 64-Bit-Systeme und verfügt über eine CFNetwork-Implementierung mit LibreSSL - basierend auf TLS.
Die Swift Corelib Foundation, eine Fallback-Version des Foundation Kit für die Programmiersprache Swift für Nicht-Apple-Plattformen, enthält eine nahezu vollständige Version der Core Foundation, die unter der Apache-Lizenz 2.0 veröffentlicht wurde .
GNUstep enthält eine Version der Core Foundation namens "libs-corebase".
Siehe auch
- GLib – das GNOME-Äquivalent
Verweise
Externe Links
- Core Foundation-Referenz bei Apple Developer Connection
- OpenCFLite bei SourceForge
- CFLite inklusive CFNetwork arbeitet in 64bit, verwendet LibreSSL (TLS 1.1, 1.2)