Kohlenstoff (API)

Kohlenstoff ist eine der Verfahrensanwendung von Apple Inc., Schnittstellen (APIs) für den Macintosh Betriebssystem programmierend. Es stellt C Programmiersprache-Zugang zu Systemdienstleistungen von Macintosh zur Verfügung. Kohlenstoff stellt einen guten Grad der rückwärts gerichteten Vereinbarkeit für Programme zur Verfügung, um auf dem jetzt veralteten Mac OS 8 und 9 zu laufen, jedoch werden diese Systeme nicht mehr aktiv unterstützt, seitdem Apfel den endgültigen OS 9 Aktualisierung im Dezember 2001 veröffentlicht hat.

Übersicht

Kohlenstoff besteht aus einem breiten Satz von Funktionen für Betriebsdateien, Gedächtnis, Daten, die Benutzerschnittstelle und anderen Systemdienstleistungen. Es wird als jede andere API durchgeführt: In Mac OS X wird es über mehreres Fachwerk (jeder eine Struktur ausgebreitet, die um eine geteilte Bibliothek gebaut ist), hauptsächlich, und, und in älterem Mac OS, es wohnt in einer einzelnen geteilten genannten Bibliothek.

Als ein Überbegriff, der alle API-Verfahren der c Sprache umfasst, die auf Mac-spezifische Funktionalität zugreifen, wird Kohlenstoff als ein getrenntes System nicht entworfen. Eher öffnet es fast die ganze Funktionalität von Mac OS X Entwicklern, die die für die weit gehend gleichwertige Kakao-API erforderliche Objektive c Sprache nicht wissen.

Kohlenstoff ist mit allen mehreren rechtskräftigen für PowerPC verfügbaren Formaten Mac OS vereinbar. Die binäre Vereinbarkeit zwischen Mac OS X und vorherigen Versionen verlangt Gebrauch einer Bevorzugten Rechtskräftigen Format-Datei, die Apfel nie in ihrem Xcode IDE unterstützt hat.

Evolution und rückwärts gerichtete Vereinbarkeit

Kohlenstoff wurde als eine sauberere Durchführung der vorhergehenden API von Macintosh entworfen. Wie ursprünglich entworfen, Anwendungszugriffsdatenaufzeichnungen von Macintosh und globale Variablen innerhalb des Betriebssystems. Diese Methoden machen Programme kompakter für primitive Computer mit dem knappen Gedächtnis, aber hindern die Hinzufügung von Eigenschaften zum Betriebssystem. Kohlenstoff trägt bei (und verlangt) modernere Methoden, um diese Information, nämlich durch das Benennen von Zugriffsberechtigter-Unterprogrammen auf undurchsichtigen Datentypen zu manipulieren. Der Prozess, eine Syntax eines Programms zu ändern, um diese Funktionen zu verwenden, ist genanntes Karbonisieren. Das macht die Anwendungsdatei unvereinbar mit Betriebssystemen vor Mac OS 8.1 mindestens, obwohl Quellvereinbarkeit häufig das mögliche Verwenden C Vorverarbeiter-Makros ist.

Andere Änderungen von der vorher existierenden API haben Eigenschaften entfernt, die mit Mac OS X begrifflich unvereinbar, oder einfach veraltet waren. Zum Beispiel konnten Anwendungen Unterbrechungsdressierer oder Gerät-Fahrer nicht mehr installieren.

Kohlenstoff wurde in der unvollständigen Form 2000 als eine geteilte Bibliothek eingeführt, die mit Mac OS von 1997 8.1 rückwärts kompatibel ist. Jedoch sind mehrere Versionen gegangen, bevor es für den allgemeinen Gebrauch reif genug war, und späte Versionen Mac OS 8.6 verlangen. Es ist allgemein notwendig, die minimalen Versionen von CarbonLib und Mac OS zu gründen, wenn man eine rückwärts kompatible Kohlenstoff-Anwendung veröffentlicht. Versionen von CarbonLib werden an besondere Versionen des Betriebssystems nicht gebunden.

Heute

Die Entwicklung von Mac OS X APIs widerspiegelt die des zu Grunde liegenden Betriebssystems. Mac OS X wird größtenteils in C und Ziel-C geschrieben. Insbesondere Ziel-C ist in den menschlichen Schnittstelle-Systemen allgegenwärtig. Mit Mac OS X v10.5 nachdem hat ein Übergang, wo sich neue Elemente der Kohlenstoff-Schnittstelle spezifisch auf das zu Grunde liegende Kakao-System, Apfel bezogen haben, Ziel-C und Kakao als die bevorzugte Schnittstelle zu menschlichen Schnittstelle-Dienstleistungen identifiziert. Der Kohlenstoff-Zugang zu verschiedenen menschlichen Schnittstelle-Dienstleistungen in den 64 Bit Betriebsumgebung ist nicht verfügbare und bedeutende neue Eigenschaften, wird zur 32-Bit-Kohlenstoff-Schnittstelle nicht hinzugefügt. Die meisten anderen Teile des Systems, die weniger Betonung auf dem Ziel-C haben, werden nicht so betroffen.

Schließlich hat Apfel den Kohlenstoff APIs erklärt, der in OS X 10.8 Silberlöwe missbilligt ist, der im Sommer 2012 befreit werden soll.

Übergang zu Kakao

Der Übergang zu 64-Bit-Anwendungen von Macintosh, die mit Mac OS X v10.5, veröffentlicht am 26. Oktober 2007 beginnen, hat die ersten Hauptbeschränkungen zu Kohlenstoff gebracht. Apfel stellt Vereinbarkeit zwischen dem Macintosh grafische Benutzerschnittstelle und der C Programmiersprache in der 64-Bit-Umgebung nicht zur Verfügung, stattdessen den Gebrauch des Objektiven-C Dialekts mit der Kakao-API verlangend. Obwohl Ziel-C bedeutende Vorteile für den Code zur Verfügung stellen kann, der bereits geschrieben ist, um seine objektorientierte Philosophie auszunutzen, hat das Bedürfnis, große Beträge des Vermächtnis-Codes umzuschreiben, den Übergang von Kohlenstoff-basierten Anwendungen berühmt mit Adobe Photoshop verlangsamt, der schließlich zu Kakao im April 2010 aktualisiert wurde.

Diese Schwierigkeit hat sich auch bis zu die eigenen Flaggschiff-Softwarepakete des Apfels ausgestreckt, als iTunes und Endkürzung ist Pro (sowie die Eigenschaften im Motor von QuickTime, der es antreibt) geschrieben in Kohlenstoff viele Jahre lang geblieben.

Beiläufig, obwohl Endkürzung Pro X ist als eine 64-Bit-Kakao-Anwendung völlig umgeschrieben worden, er eine bedeutende Anzahl von in der unterbrochenen Kohlenstoff-Version gefundenen Eigenschaften vermisst. iTunes 10.4 wurde auch als eine 64-Bit-Kakao-Anwendung umgeschrieben, die am 20. Juli 2011 veröffentlicht wurde.

Architektur

Kohlenstoff steigt vom Werkzeugkasten, und als solcher hinunter, wird aus "Betriebsleitern" zusammengesetzt. Jeder Betriebsleiter ist eine funktionell zusammenhängende API, Sätze von Datenstrukturen und Funktionen definierend, sie zu manipulieren. Betriebsleiter sind häufig voneinander abhängig oder layered.

Neuere Teile von Kohlenstoff neigen dazu, viel mehr in ihrer Vorstellung, den meisten von ihnen gestützt auf dem Kernfundament objektorientiert zu sein. Einige Betriebsleiter, wie der HIView Betriebsleiter (eine Obermenge des Kontrollbetriebsleiters), werden in C ++ durchgeführt, aber Kohlenstoff bleibt eine C API.

Einige Beispiele von Kohlenstoff-Betriebsleitern:

  • Dateibetriebsleiter - führt Zugang zum Dateisystem, das Schließen, Lesen und Schreiben von Dateien öffnend.
  • Quellenbetriebsleiter - führt Zugang zu Mitteln, die vorherbestimmte Klötze von Daten sind, die ein Programm verlangen kann. Anruf-Dateibetriebsleiter, um Mittel von Plattendateien zu lesen und zu schreiben. Beispiele von Mitteln schließen Ikonen, Töne, Images, Schablonen für Produkte usw. ein.
  • Schriftart-Betriebsleiter - führt Schriftarten. Missbilligt (als ein Teil von QuickDraw) seit Mac OS X v10.4, für Apple Type Services (ATS).
  • QuickDraw - 2. Grafikprimitive. Missbilligt seit Mac OS X v10.4, für 2. Quarz.
  • Kohlenstoff-Ereignis-Betriebsleiter - wandelt Benutzer und Systemtätigkeit in Ereignisse um, die Code erkennen und darauf antworten kann.
  • HIObject - eine völlig neue objektorientierte API, die zu Kohlenstoff ein OO Modell bringt, um GUIs zu bauen. Das ist in Mac OS X v10.2 oder später verfügbar, und gibt Kohlenstoff-Programmierern einige der Werkzeuge, mit denen Kakao-Entwickler lange vertraut gewesen sind. Mit Mac OS X v10.2 anfangend, ist HIObject die Grundklasse für alle GUI Elemente in Kohlenstoff. HIView wird vom Schnittstelle-Baumeister, Teil der Entwickler-Werkzeuge des Apfels unterstützt. Traditionell sind GUI Architekturen dieser Sorte zum Drittanwendungsfachwerk verlassen worden zur Verfügung zu stellen. Mit Mac OS X v10.4 anfangend, sind HIObjects NSObjects und erben die Fähigkeit, in Datenströme für den Transport in Fortsetzungen veröffentlicht zu werden oder zur Platte sparend.
  • HITheme - verwendet QuickDraw und Quarz, um Elemente der grafischen Benutzerschnittstelle (GUI) zum Schirm zu machen. HITheme wurde in Mac OS X v10.3 eingeführt, und Äußer-Betriebsleiter ist eine Vereinbarkeitsschicht oben auf HITheme seit dieser Version.
  • HIView Betriebsleiter - führt Entwicklung, Zeichnung, Erfolg-Prüfung und Manipulation von Steuerungen. Seit Mac OS X v10.2 sind alle Steuerungen HIViews. In Mac OS X v10.4 wurde der Kontrollbetriebsleiter der HIView Betriebsleiter umbenannt.
  • Fensterbetriebsleiter - führt Entwicklung, Positionierung, das Aktualisieren und die Manipulation von Fenstern. Seit Mac OS X v10.2 haben Fenster eine Wurzel HIView.
  • Menübetriebsleiter - führt Entwicklung, Auswahl und Manipulation von Menüs. Seit Mac OS X v10.2 sind Menüs HIObjects. Seit Mac OS X v10.3 kann Menüinhalt mit HIViews gezogen werden, und alle Standardmenüs verwenden HIViews, um zu ziehen.

Das Ereignis-Berühren

Der Ereignis-Betriebsleiter von Mac Toolbox hat ursprünglich ein abstimmendes Modell für das Anwendungsdesign verwendet. Die Hauptereignis-Schleife der Anwendung bittet den Ereignis-Betriebsleiter für ein Ereignis-Verwenden GetNextEvent. Wenn es ein Ereignis in der Warteschlange gibt, passiert der Ereignis-Betriebsleiter sie zurück zur Anwendung, wo sie behandelt wird, sonst kehrt sie sofort zurück. Dieses Verhalten wird "beschäftigtes Warten" genannt, die Ereignis-Schleife unnötigerweise führend. Beschäftigtes Warten reduziert den Betrag der Zentraleinheitszeit, die für andere Anwendungs- und Abnahme-Batteriemacht auf Laptops verfügbar ist. Wie man versicherte, waren die klassischen Ereignis-Betriebsleiter-Daten vom ursprünglichen Mac OS 1984, als was auch immer Anwendung lief, das einzige Anwendungslaufen, und wo Macht-Management nicht eine Sorge war.

Mit dem Advent von MultiFinder und der Fähigkeit, mehr als eine Anwendung zu führen, ist gleichzeitig ein neuer Ereignis-Betriebsleiter Anruf, WaitNextEvent gekommen, der einer Anwendung erlaubt, einen Schlaf-Zwischenraum anzugeben. Ein leichter Trick für den Vermächtnis-Code, um ein effizienteres Modell ohne Hauptänderungen zu seinem Quellcode anzunehmen, soll einfach die Schlaf-Parameter aufstellen, die zu WaitNextEvent zu einem sehr großen Wert — auf OS X passiert sind, das stellt den Faden, um zu schlafen, wann auch immer es nichts gibt, um zu tun, und nur ein Ereignis zurückgibt, wenn es gibt, um in einer Prozession zu gehen. Auf diese Weise wird das abstimmende Modell schnell umgekehrt, um gleichwertig zum Rückrufaktionsmodell mit der Anwendung zu werden, die sein eigenes Ereignis-Verschicken auf die ursprüngliche Weise durchführt. Es gibt Lücken, dennoch. Für einen der Vermächtnis-Werkzeugkasten-Anruf nennt ModalDialog zum Beispiel die ältere Funktion von GetNextEvent innerlich, auf Stimmabgabe auf eine dichte Schleife ohne das Blockieren hinauslaufend.

Kohlenstoff führt ein Ersatzsystem, genannt den Kohlenstoff-Ereignis-Betriebsleiter ein. (Der ursprüngliche Ereignis-Betriebsleiter besteht noch für die Vereinbarkeit mit Vermächtnis-Anwendungen). Kohlenstoff-Ereignis-Betriebsleiter stellt die Ereignis-Schleife für den Entwickler (gestützt auf dem Kernfundament in der aktuellen Durchführung) zur Verfügung; der Entwickler stellt Ereignis-Dressierer auf und geht in die Ereignis-Schleife in der Hauptfunktion ein, und wartet auf den Kohlenstoff-Ereignis-Betriebsleiter, um Ereignisse zur Anwendung zu entsenden.

Zeitmesser

Im Klassiker Mac OS gab es keine Betriebssystembetreuung für Anwendungsniveau-Zeitmesser (der Zeitmanager der niedrigeren Ebene war verfügbar, aber hat Zeitmesser-Rückrufaktionen in der Unterbrechungszeit durchgeführt, während deren Sie Anrufe zu den meisten Werkzeugkasten-Routinen nicht sicher machen konnten). Zeitmesser wurden gewöhnlich Anwendungsentwicklern verlassen durchzuführen, und das wurde gewöhnlich durch das Zählen der verbrauchten Zeit während des müßigen Ereignisses - d. h. ein Ereignis getan, das von WaitNextEvent zurückgegeben wurde, als jedes andere Ereignis nicht verfügbar war. In der Größenordnung von solchen Zeitmessern, um angemessene Entschlossenheit zu haben, konnten Entwickler nicht WaitNextEvent gewähren, um sich zu lange zu verspäten, und so niedrig Rahmen "zu schlafen", wurden gewöhnlich gesetzt. Das läuft auf hoch ineffizientes Terminplanungsverhalten hinaus, da der Faden sehr lange nicht schlafen wird, stattdessen wiederholt erwachend, um diese müßigen Ereignisse zurückzugeben. Apfel hat Zeitmesser-Unterstützung zu Kohlenstoff hinzugefügt, um dieses Problem zu richten — das System kann Zeitmesser mit der großen Leistungsfähigkeit planen.

Referenzen

Links


Falke / Klassische Umgebung
Impressum & Datenschutz