Kakao (API)

Kakao ist die heimische objektorientierte Anwendung, Schnittstelle programmierend (API) des Apfels für den Mac OS X Betriebssystem. Die zusammenhängende API-Kakao-Berührung schließt Geste-Anerkennung, Zeichentrickfilm und eine verschiedene Benutzerschnittstelle-Bibliothek ein, und ist für Anwendungen für das EIN/AUSGABE-STEUERSYSTEM Betriebssystem, das auf Apfelgeräten wie das iPhone, der iPod touch und das iPad verwendet ist.

Kakao besteht aus dem Fundament-Bastelsatz, Anwendungsbastelsatz und Kerndatenfachwerk, wie eingeschlossen, durch die Kopfball-Datei, sowie die Bibliotheken und das Fachwerk, das von denjenigen, wie die C Standardbibliothek und die Objektive-C Durchlaufzeit selbst eingeschlossen ist.

Kakao-Anwendungen werden normalerweise mit den Entwicklungswerkzeugen entwickelt, die durch den Apfel, spezifisch Xcode (früher Projektbaumeister) und Schnittstelle-Baumeister mit der Objektiven c Sprache zur Verfügung gestellt sind. Jedoch kann auf die Kakao-Programmierumgebung mit anderen Werkzeugen, wie Clozure-KL., LispWorks, Object Pascal, Pythonschlange, Perl, Ruby, und AppleScript mithilfe vom Überbrücken von Mechanismen wie PasCocoa, PyObjC, CamelBones, RubyCocoa und die D/Objective-C Bridge zugegriffen werden. Eine Durchführung der Sprache von Ruby, genannt MacRuby, der die Voraussetzung für einen Überbrücken-Mechanismus beseitigt, ist unter der Entwicklung durch den Apfel, während Nu eine einem Lispeln ähnliche Sprache ist, die mit Kakao ohne eine Brücke verwendet werden kann. Es ist auch möglich, Objektive-C Kakao-Programme in einem einfachen Textaufbereiter zu schreiben und es manuell mit GCC oder Klappern von der Befehl-Linie oder von einem makefile zu bauen.

Für Endbenutzer, wie man betrachtet, sind Kakao-Anwendungen jene das geschriebene Verwenden der Kakao-Programmierumgebung. Solche Anwendungen haben gewöhnlich ein kennzeichnendes Gefühl, da die Kakao-Programmierumgebung viele Aspekte einer Anwendung automatisiert, um die menschlichen Schnittstelle-Richtlinien des Apfels zu erfüllen.

Kakao-Geschichte

Kakao setzt die Abstammung von mehrerem Fachwerk (in erster Linie der App Kit und Foundation Kit) von NeXTSTEP und OpenStep fort, Umgebungen programmierend, die von NeXT in den 1980er Jahren und 1990er Jahren entwickelt sind. Apfel hat NeXT im Dezember 1996 erworben, und ist nachher auf der Rhapsodie Betriebssystem zur Arbeit gegangen, das der direkte Nachfolger von OpenStep hat sein sollen. Es sollte eine Wetteifer-Basis für Anwendungen von Mac OS, genannt Blauen Kasten gehabt haben. Die Basis von OpenStep von Bibliotheken und binärer Unterstützung wurde Gelber Kasten genannt. Rhapsodie, die in Mac OS X und den Gelben Kasten entwickelt ist, ist Kakao geworden. Infolgedessen beginnen Kakao-Klassen mit dem Akronym "NS" (Stehen entweder für die Entwicklung der FOLGENDEN SONNE von OpenStep, oder für den ursprünglichen Eigentumsbegriff für das Fachwerk von OpenStep, NeXTSTEP): NSString, NSArray, usw.

Viel von der Arbeit, die ins Entwickeln von OpenStep eingetreten ist, wurde auf die Entwicklung von Mac OS X, Kakao angewandt, der der am meisten sichtbare Teil ist. Es, gibt jedoch, einige Unterschiede. Zum Beispiel haben NeXTSTEP und OpenStep Anzeige PostScript für die Bildschirmanzeige des Textes und der Grafik verwendet, während Kakao vom Quarz des Apfels abhängt (der den PDF Bildaufbereitung des Modells, aber nicht seiner zu Grunde liegenden Technologie verwendet). Kakao hat auch ein Niveau der Internetunterstützung, einschließlich des NSURL und der HTML-Klassen von WebKit und der anderen. Während unter OpenStep es nur rudimentäre Unterstützung für geführte Netzverbindungen durch Klassen von NSFileHandle und Steckdosen von Berkeley gab.

Vor seinem aktuellen Gebrauch war die "Kakao"-Handelsmarke der Name einer Anwendung, die Kindern geholfen hat, Multimediaprojekte zu schaffen. Ursprünglich bekannt als KidSim wird es von einem Dritten lizenziert und als Stagecast Schöpfer auf den Markt gebracht. Das Programm wurde in einer der Rationalisierungen unterbrochen, die der Rückkehr von Steve Jobs zum Apfel gefolgt sind. Der Name wurde wiederverwendet, um die Verzögerung zu vermeiden, während man eine neue Handelsmarke mit Stagecast eingeschrieben hat, der bereit ist, den älteren Kakao unter einem neuen Namen auf den Markt zu bringen.

Speichermanagement

Eine Eigenschaft der Kakao-Umgebung ist seine Möglichkeit, um dynamisch zugeteiltes Gedächtnis zu führen. Die NSObject Klasse von Kakao, von der die meisten Klassen, sowohl Verkäufer als auch Benutzer, abgeleitet werden, führt ein Bezugszählen-Schema für das Speichermanagement durch. Gegenstände sind auf die NSObject-Wurzelklasse zurückzuführen gewesen antworten auf a und eine Nachricht und behalten eine behalten Zählung, die durch das Senden einer Nachricht gefragt werden kann. Ein kürzlich zugeteilter Gegenstand, der damit geschaffen ist, oder hat eine behalten Zählung von einer. Wenn sie diesem Gegenstand sendet, erhöht eine Nachricht die behalten Zählung, während sie ihm eine Nachricht Verminderung die behalten Zählung sendet. Wenn ein Gegenstand Zählung behält, erreicht Null, es ist ähnlich einem C ++ destructor. deallocated wird nicht versichert, angerufen zu werden.

Mit Objektiven-C 2.0 anfangend, führt die Objektive-C Durchlaufzeit einen fakultativen Müllmann durch. In diesem Modell dreht die Durchlaufzeit Kakao-Bezugszählen-Operationen, die "behalten" und in nein "veröffentlichen". Der Müllmann besteht auf der EIN/AUSGABE-STEUERSYSTEM-Durchführung von Objektiven-C 2.0 nicht. Die Müll-Sammlung in Objektiven-C Läufen auf einem Hintergrundfaden des niedrigen Vorrangs, und kann auf den Benutzerereignissen von Kakao mit der Absicht hinken, die Benutzererfahrung antwortend zu halten.

2011 hat der LLVM Bearbeiter KREISBOGEN eingeführt (das automatisierte Bezugszählen), der den herkömmlichen Müllmann durch das Durchführen statischer Analyse des Objektiven-C Quellcodes ersetzt und das Einfügen behalten und Nachrichten als notwendig veröffentlichen.

Hauptfachwerk

Kakao besteht aus drei Objektiven-C Gegenstand-Bibliotheken genannt Fachwerk. Fachwerk ist geteilten Bibliotheken, ein kompilierter Gegenstand funktionell ähnlich, der in einen Adressraum eines Programms an der Durchlaufzeit dynamisch geladen werden kann, aber Fachwerk fügt vereinigte Mittel, Kopfball-Dateien und Dokumentation hinzu. Das Kakao-Fachwerk wird als ein Typ des Anwendungsbündels durchgeführt, die oben erwähnten Sachen in Standardpositionen enthaltend.

  • Fundament-Bastelsatz, oder allgemeiner einfach Fundament, ist zuerst in OpenStep erschienen. Auf Mac OS X basiert es auf dem Kernfundament. Fundament ist eine allgemeine objektorientierte Bibliothek, die Schnur und Wertmanipulation, Behälter und Wiederholung, verteilte Computerwissenschaft, geführte Schleifen und andere Funktionen zur Verfügung stellt, die an die grafische Benutzerschnittstelle nicht direkt gebunden werden. Das "NS" Präfix, das für alle Klassen und Konstanten im Fachwerk verwendet ist, kommt aus dem OPENSTEP Erbe von Kakao, das von NeXT und Sonne gemeinsam entwickelt wurde.
  • Anwendungsbastelsatz oder AppKit werden vom ursprünglichen Anwendungsbastelsatz von NeXTSTEP direkt hinuntergestiegen. Es enthält Code, mit dem Programme schaffen und mit grafischen Benutzerschnittstellen aufeinander wirken können. AppKit wird oben auf dem Fundament gebaut, und verwendet dasselbe "NS" Präfix.
  • Kerndaten sind das Gegenstand-Fortsetzungsfachwerk, das mit dem Fundament und Kakao eingeschlossen ist und in Cocoa.h gefunden ist.

Ein Schlüsselteil der Kakao-Architektur ist sein umfassendes Ansicht-Modell. Das wird entlang herkömmlichen Linien für ein Anwendungsfachwerk organisiert, aber basiert auf dem PDF, der durch Quarz zur Verfügung gestelltes Modell zieht. Das erlaubt Entwicklung des kundenspezifischen Zeichnungsinhalts das Verwenden einer Nachschrift ähnlicher Zeichnungsbefehle, der auch automatische Drucker-Unterstützung und so weiter erlaubt. Da das Kakao-Fachwerk den ganzen Ausschnitt, das Scrollen, das Schuppen und die anderen lästigen Arbeiten führt, Grafik zu ziehen, wird der Programmierer davon befreit, grundlegende Infrastruktur durchzuführen, und kann sich nur auf die einzigartigen Aspekte eines Inhalts einer Anwendung konzentrieren.

Muster-Ansicht-Kontrolleur

Die Plausch-Mannschaften an Xerox, den PARC schließlich auf eine Designphilosophie gesetzt hat, die zu leichter Entwicklung geführt hat und hoch Wiedergebrauch codiert. Bekannt als "Muster-Ansicht-Kontrolleur" (MVC) bricht das Konzept eine Anwendung in drei Sätze von aufeinander wirkenden Gegenstand-Klassen.

  • Musterklassen vertreten rohe Daten, wie Dokumente, Einstellungen, Dateien oder Gegenstände im Gedächtnis.
  • Ansichten sind, weil der Name, Sehdarstellungen der Daten im Modell einbezieht.
  • Kontrolleur-Klassen enthalten Logik, die die Modelle mit ihren Ansichten verbindet, und Staat aufrechterhält, um sie synchronisiert zu halten.

Das Design von Kakao ist eine strenge Anwendung von MVC Grundsätzen. Unter OpenStep waren die meisten zur Verfügung gestellten Klassen irgendein Ansicht-Klassen auf höchster Ebene (in AppKit) oder eine mehrerer relativ auf niedriger Stufe Musterklassen wie NSString. Im Vergleich zu ähnlichen MVC Systemen hat OpenStep an einer starken Musterschicht Mangel gehabt. Es gab keine Aktienklasse, die ein "Dokument" zum Beispiel vertreten hat. Während des Übergangs zu Kakao wurde die Musterschicht außerordentlich ausgebreitet, mehrere vorgerollte Klassen einführend, um für Tischanwendungen übliche Funktionalität zur Verfügung zu stellen.

In Mac OS X 10.3 hat Apfel die NSController Familie von Klassen vorgestellt, die vorherbestimmtes Verhalten für die Kontrolleur-Schicht zur Verfügung stellen. Diese Klassen werden als ein Teil des Kakaos als Bindings System betrachtet, das auch umfassenden Gebrauch von Protokollen wie das Schlüsselwert-Beobachten und die Schlüsselwert-Schwergängigkeit macht. Der Begriff 'Schwergängigkeit' bezieht sich auf eine Beziehung zwischen zwei Gegenständen, häufig zwischen einer Ansicht und einem Kontrolleur. Bindings erlauben dem Entwickler, sich mehr auf Aussagebeziehungen zu konzentrieren, anstatt feinkörniges Verhalten zu orchestrieren.

Mit der Ankunft von Mac OS X 10.4 hat Apfel dieses Fundament weiter durch das Einführen des Kerndatenfachwerks erweitert, das das Änderungsverfolgen und die Fortsetzung bei der Musterschicht standardisiert. Tatsächlich vereinfacht das Fachwerk außerordentlich den Prozess, Änderungen mit Anwendungsdaten vorzunehmen, Änderungen (nötigenfalls) aufmachend, Daten zur Platte sparend, und es zurück darin lesend.

Durch die Versorgung der Fachwerk-Unterstützung für alle drei MVC Schichten ist die Absicht des Apfels, den Betrag des Textbausteins zu reduzieren, oder "Leim" codieren das Entwickler müssen schreiben, Mittel befreiend, Zeit auf anwendungsspezifischen Eigenschaften zu verbringen.

Spät Schwergängigkeit

Auf den meisten objektorientierten Sprachen, ruft Methoden zu werden physisch durch einen Zeigestock zum Code im Gedächtnis vertreten. Das schränkt das Design einer Anwendung ein, da spezifischer "Befehl, der" Klassen behandelt, erforderlich, gewöhnlich gemäß dem Designmuster der Kette der Verantwortung organisiert ist. Während Kakao diese Annäherung größtenteils, Ziel-C's behält, öffnet späte Schwergängigkeit mehr Flexibilität.

Unter dem Ziel-C werden Methoden von einem Auswählenden, eine Schnur vertreten, die die Methode beschreibt, genannt zu werden. Wenn eine Nachricht gesandt wird, wird der Auswählende in die Durchlaufzeit von ObjC gesandt, die gegen eine Liste von verfügbaren Methoden verglichen ist, und die Durchführung der Methode wird genannt. Da der Auswählende Textdaten ist, erlaubt das ihm, zu einer Datei gespart zu werden, die über ein Netz oder zwischen Prozessen übersandt ist, oder hat auf andere Weisen manipuliert. Die Durchführung der Methode wird an der Durchlaufzeit, nicht Übersetzungszeit nachgeschlagen. Es gibt eine kleine Leistungsstrafe dafür, aber späte Schwergängigkeit erlaubt demselben Auswählenden, in verschiedenen Durchführungen Verweise anzubringen.

Durch einen ähnlichen Jeton stellt Kakao eine durchdringende Datenmanipulationsmethode genannt Schlüsselwert-Codieren (KVC) zur Verfügung. Das erlaubt einem Stück von Daten oder Eigentum eines Gegenstands, nachgeschlagen oder an der Durchlaufzeit namentlich - die Eigentumsnamentaten als ein Schlüssel zum Wert selbst geändert zu werden. Auf traditionellen Sprachen ist diese späte Schwergängigkeit nicht möglich. KVC führt zu großer Designflexibilität - ein Typ eines Gegenstands braucht noch nicht bekannt zu sein jedes Eigentum dieses Gegenstands kann mit KVC entdeckt werden. Außerdem, durch das Verlängern dieses Systems mit etwas Schlüsselwert-Kakao-Anruf-Beobachten (KVO), Macht automatische Unterstützung dafür Auf/nochmals tut wird zur Verfügung gestellt.

Spät ist statische Schwergängigkeit eine Variante der Schwergängigkeit irgendwo zwischen der statischen und dynamischen Schwergängigkeit. Die Schwergängigkeit von Namen vor dem Programm wird geführt wird statisch ("früh") genannt; bindings hat geleistet, weil die Programm-Läufe ("spät" oder "virtuell") dynamisch sind.

Reiche Gegenstände

Eine der nützlichsten Eigenschaften von Kakao ist die starken "Grundgegenstände" der Systembedarf. Als ein Beispiel, denken Sie die Fundament-Klassen und, die Schnuren von Unicode und das System in AppKit zur Verfügung stellen, der dem Programmierer erlaubt, Schnur-Gegenstände in den GUI zu legen.

und seine zusammenhängenden Klassen werden verwendet, um Schnuren zu zeigen und zu editieren. Die Sammlung von beteiligten Gegenständen erlaubt einer Anwendung, irgendetwas von einem einfachen einzeiligen Texteingabe-Feld bis eine ganze Mehrseite, Mehrsäulentextlay-Out-Diagramm, mit vollen Berufstypografie-Eigenschaften wie kerning, Binden durchzuführen, Text um willkürliche Gestalten, Folge, volle Unterstützung von Unicode und anti-aliased glyph Übergabe führend. Paragraf-Lay-Out kann automatisch oder vom Benutzer mit einem eingebauten "Lineal"-Gegenstand kontrolliert werden, der jeder Textansicht beigefügt werden kann. Rechtschreibung zu prüfen, ist mit einem einzelnen durch alle Anwendungen verwendeten Wörterbuch automatisch, der das "schnörkelige Unterstreichen" Tagung verwendet, die von Microsoft (wirklich eine verflixte rote Unterstreichung in Kakao) eingeführt ist. Unbegrenzt Machen Unterstützung Auf/nochmals tun wird darin gebaut. Mit nur die eingebauten Eigenschaften kann man eine Textaufbereiter-Anwendung in nur 10 Linien des Codes schreiben. Mit neuen Kontrolleur-Gegenständen kann das zur Null fallen. Das ist im Gegensatz zu TextEdit im früheren Mac OS gefundener APIs.

Wenn Erweiterungen erforderlich sind, macht der Gebrauch von Kakao des Ziels-C das eine aufrichtige Aufgabe. Ziel-C schließt das Konzept von "Kategorien" ein, das Modifizierungen zu einer vorhandenen Klasse "im Platz" berücksichtigt. Funktionalität kann in einer Kategorie ohne irgendwelche Änderungen zu den ursprünglichen Klassen im Fachwerk oder sogar Zugang zu seiner Quelle vollbracht werden. Unter dem allgemeineren Fachwerk würde diese dieselbe Aufgabe verlangen, dass der Programmierer eine neue Unterklasse macht, die die zusätzlichen Eigenschaften unterstützt, und dann alle Beispiele der Klassen zu dieser neuen Klasse ändert.

Implementations und Bindings

Das Kakao-Fachwerk wird im Ziel-C geschrieben, und folglich ist Ziel-C die bevorzugte Sprache für die Entwicklung von Kakao-Anwendungen. Java bindings für das Kakao-Fachwerk (bekannt als die "javanische Brücke") ist auch verfügbar, aber hat sich populär unter Kakao-Entwicklern nicht erwiesen. Weiter bedeutet das Bedürfnis nach der Laufzeitschwergängigkeit, dass viele Hauptmerkmale von Kakao mit Java nicht verfügbar sind. 2005 hat Apfel bekannt gegeben, dass die javanische Brücke missbilligt werden sollte, bedeutend, dass Eigenschaften, die zu Kakao in Versionen von Mac OS X später hinzugefügt sind als 10.4, nach Kakao-Java nicht hinzugefügt würden, Schnittstelle programmierend.

ApplescriptObjC

Ursprünglich konnte Applescript Studio verwendet werden, um weniger komplizierte Kakao-Anwendungen zu entwickeln. Jedoch, bezüglich des Schnee-Leoparden, ist es missbilligt worden. Es wurde durch ApplescriptObjC ersetzt, der Ihnen dem Programm in Applescript erlaubt, während er Kakao-Fachwerk verwendet.

Anderer Bindings

Dritt-bindings verfügbar für andere Sprachen schließen Clozure KL., LispWorks, PyObjC (Pythonschlange), RubyCocoa (Rubin), CamelBones (Perl), Cocoa#, Monobjc (C#) und NObjective (C#) ein. Nu verwendet das Objektive-C Gegenstand-Modell direkt, und kann deshalb das Kakao-Fachwerk verwenden, ohne eine Schwergängigkeit zu verlangen.

Es gibt auch offene Quelldurchführungen von Hauptteilen des Kakao-Fachwerks, das Quer-Plattform (einschließlich Windows von Microsoft) Kakao-Anwendungsentwicklung, wie GNUstep und Cocotron erlaubt.

Referenzen

  • Aaron Hillegass: Addison-Wesley, 3. Ausgabe 2008, Paperback, internationale Standardbuchnummer 0-321-50361-9.
  • Stephen Kochan: Sams, 1. Ausgabe 2003, Paperback, internationale Standardbuchnummer 0-672-32586-1.
  • Michael Beam, James Duncan Davidson: O'Reilly, 1. Ausgabe 2003, Paperback, internationale Standardbuchnummer 0-596-00462-1.
  • Erick Tejkowski: 1. Ausgabe 2003, Paperback, internationale Standardbuchnummer 0-7645-2613-8.
  • Simson Garfinkel, Michael K. Mahoney: O'Reilly, 1. Ausgabe 2002, Paperback, internationale Standardbuchnummer 0-596-00235-1.
  • James Duncan Davidson: O'Reilly, 2. Ausgabe 2002, Paperback, internationale Standardbuchnummer 0-596-00301-3.
  • Scott Anguish, Erik M. Buck, Donald A. Yacktman: Sams, 1. Ausgabe 2002, Paperback, internationale Standardbuchnummer 0-672-32230-7.
  • Bill Cheeseman: Peachpit Presse, 1. Ausgabe 2002, Paperback, internationale Standardbuchnummer 0-201-87801-1.
  • Andrew Duncan: O'Reilly, 1. Ausgabe 2002, Paperback, internationale Standardbuchnummer 0-596-00423-0.
  • Apple Inc.: O'Reilly, 1. Ausgabe 2001, Paperback, internationale Standardbuchnummer 0-596-00160-6.

Links


Vertrautes System / GNUstep
Impressum & Datenschutz