Mac Application Development für Dummies

Macintosh-Anwendungsentwicklung Anwendungen Rückrufe

Mac OS X auszuführen Code in Ihrer Anwendung für bestimmte Operationen zu ermöglichen. Wenn Sie ein Standard-Macintosh erstellen möchten von Fenster- und dokumentenbasierte App, die erste Code, dass OS X ausführen wird, ist in einem der folgenden Callback-Methoden müssen Sie für Ihre Anwendung zu erstellen, auf dem App-Design abhängig:

  • Window-basierte Anwendungen: (Void) applicationDidFinishLaunching: (NSNotification *) aNotification

  • Document-basierte Anwendungen: (Void) windowControllerDidLoadNib: (NSWindowController *) windowController

Ein Rückruf ist einfach eine Methode, die das Betriebssystem führt schließlich, während es versucht, Informationen aus Ihrer Anwendung zu liefern oder abrufen. Ihr Anwendungscode wird ein Verfahren für eine Cocoa-Klasse ausführen, wo Sie Ihre App die Möglichkeit haben, den Namen einer Methode eines Ihrer Klassen zur Verfügung zu stellen, auf ein Objekt dieser Klasse aufgerufen werden, um Ihre App wird auch zur Verfügung stellen müssen.

EIN delegieren Objekt ist ein Helfer, der eine Cocoa-Klasse verwendet, die Funktionalität der Klasse zu erweitern, indem Sie Code zu implementieren, die die Cocoa-Klasse unter bestimmten Umständen ausgeführt werden. Eine Cocoa-Klasse überprüft seine Delegatobjekt für (falls zugewiesen wurde), ob die Delegierten eine Implementierung eines spezifischen Verfahrens zur Verfügung stellt. Wenn die Delegierten, dass die Methode hat, führt die Cocoa-Klasse, die Methoden-, wenn die Delegierten nicht, dass die spezifische Methode nicht implementiert, die Cocoa-Klasse verwendet entweder eine Standardmethode der eigenen oder einen Fehler meldet. Die meisten Delegierten müssen eine bestimmte integrieren Protokoll bestimmt ist, welche Methoden können sie den Code der Delegierten Implementing müssen die Methoden aus dem spezifischen Protokoll implementieren verwenden, die der Delegierte erwartet.

Hier sind einige der Cocoa-Objekte, die Delegierten Ihren Code ausführen können:

  • NSTableView. Das NSTableView akzeptiert einen Delegaten, der gehorcht NSTableViewDelegate Protokoll. Dazu gehören 20 bis 30 Methoden, die Ihre App-Objekt delegieren implementieren können Ihre App müssen wissen, was die Unterstützung NSTableView macht. Es gibt Methoden, die in der Anwendung aufgerufen wird, wenn es wissen muss, und reagieren auf einem Aktionen, wie zum Beispiel, wenn ein Benutzer eine Auswahl in der Tabelle oder wenn eine Spalte der Größe verändert wird.

  • NSApplication. Sie können eine zuweisen NSApplicationDelegate einige der Methoden zu behandeln, die eine NSApplication Instanz (Anwendung) erhalten. Diese Methoden können nur aufgerufen werden, bevor oder kurz nach der Anwendung einer anderen Methode ausgeführt wird, so dass Ihre Anwendung hergestellt werden können.

  • NSWindow. Ein NSWindowDelegate zugewiesen Fenster zu einem Ihrer Anwendung wird Ihre App eine Chance geben, an einen Benutzer Verzerren, Verschieben oder andere Fenster Ereignisse zu reagieren.

  • NSMenu. Sie implementieren ein NSMenuDelegate Ereignisse zu unterstützen, die passieren, wenn ein Benutzer mit Menüs in Ihrer Anwendung interagiert.

Non-Objective-C-Frameworks in Macintosh-Anwendungen

Apple stellt viele Macintosh-Anwendung Entwicklungs-Frameworks (Code-Bibliotheken), dass Ihre App, die Tausende von Operationen in OS X. Viele dieser Frameworks wie das PDF-Kit zur Durchführung aufrufen können, sind aus Objective-C-Klassen zusammengesetzt, aus denen Ihre Anwendung kann erstellen und verwenden von Objekten in Ihre Anwendungen. Allerdings sind einige dieser Frameworks nur Bibliotheken von Funktionen, die Ihre Anwendung ausführen kann.

Zum Beispiel kann die CFNetwork Rahmen ist eine Reihe von Funktionen, die Ihre Anwendung fein abgestimmte Netzwerk ausführen können Verbindungen. Das NSURL Klasse stellt einen guten Satz von grundlegenden Netzwerkoperationen, die für das Abrufen von Daten über eine URL groß sind. Wenn Ihre Anwendung mehr Kontrolle über die Netzwerk-Kommunikation erfordert es initiiert, müssen Sie die zu verwenden CFNetwork Rahmen und seine Funktionen. Sie könnten den folgenden Code verwenden, um eine HTTP-Anforderung für die Übertragung zu einer bestimmten URL zu erstellen:

CFStringRef httpBody = CFSTR ( "") -CFStringRef headerFieldName = CFSTR ( "Cookies") - // spezifische Cookie in den HTTP requestCFStringRef headerFieldValue = CFSTR ( "loginID = my_user_name- password = my_password-") -CFStringRef url = CFSTR ( "diabeticpad .com ") -CFURLRef urlRef = CFURLCreateWithStrign (kCFAllocatorDefault, url, NULL) -CFStringRef request = CFSTR (" GET ") -CFHTTPMessageRef request = CFHTTPMessageCreateRequest (kCFAllocatorDefault, request, url, kCFHTTPVersion1_1) -CFHTTPMessageSetBody (Anfrage, httpBody) - // fügen Sie die cookieCFHTTPMessageSetHeaderFieldValue (Anfrage, headerFieldName, headerFieldValue) -CFDataRef serializedHttpRequest = CFHTTPMessageCopySerializedMessage (Anfrage) -

Sobald Ihr Code die serialisierten Anforderung hat, kann die App dann einen Schreibstrom öffnen, um die Anforderung an seinen Bestimmungsort zu liefern.

Alle der C-basierten Apple-Frameworks bieten diese Art von niedrigerer Ebene Programmierung eine Reihe von Funktionen für die Durchführung. Ihr Code wird noch komplizierter, aber Apple nicht Objective-C-Klassen für alle Frameworks. Wenn Sie wirklich die Funktionalität in einem dieser Frameworks erfordern, ist dies der einzige Weg, um Ihre App Ziele erreichen können. Die folgenden Frameworks bieten keine Objective-C-Klassen:

  • Audio Toolbox

  • CFNetwork

  • Core MIDI

  • Core-Text

  • Directory Service (wie LDAP und Open Directory)

  • Sicherheit

Wenn Sie Anwendungen erstellen möchten, die alle Vorteile der Funktionen von OS X nehmen können, müssen Sie bereit sein, um die Verwendung von nicht-Objective-C-Code-Bibliotheken zu unterstützen.

C ++ Code in Objective-C Macintosh-Anwendungen

Objective-C bietet objektorientierte Funktionen für Macintosh-Anwendungsentwicklung, wie Vererbung und Polymorphismus. Die Sprache auf der Programmiersprache C sprach- daher basiert, können Sie Ihre C-Programmierkenntnisse in Objective-C-Code verwenden. Objective-C ++ ist eine Brücke Mechanismus, Objective-C-Source-Module ermöglichen, mit Objective-C ++ Klassen zu arbeiten, die mit C ++ Code-Bibliotheken kompilieren und verknüpfen könnte.

Das folgende einfache Beispiel einer quadratischen Matrix zeigt den Inhalt eines C ++ Header-Datei für eine Matrix Klasse. Die Matrix-Klasse wird mit der Standard-Konstruktor und Destruktor für eine C ++ Klasse und die Methoden sind, was Sie für eine grundlegende quadratische Matrix Objekt erwarten würde:

Klasse Matrix {public: Matrix (int Insize) -Virtual ~ Matrix () - int getSize (void) -int getDeterminant (void) -Lücke setElement (int InRow, int Incol, int inValue) -int getElement (int InRow, int Incol ) -Matrix operator + (const Matrix inAddend) -privater: int m_size-int [] [] m_elements -} -

So verwenden Sie Objective-C ++, Ihre Objective-C ++ Klassenmodule müssen die Dateierweiterung verwenden .Millimeter. Dies sagt Xcode-Compiler, der die Klasse ist Objective-C ++ kompiliert werden mit, was Ihre Klasse ermöglicht Sprache C ++ Keywords zu verwenden. Mit Objective-C ++, könnte Ihre Anwendung ein Matrix-Objekt erstellen Sie grundlegende Funktionen wie das Hinzufügen von zwei Matrix zusammen Objekte. Dies setzt voraus, die Objective-C ++ Quellenmodul hat #Imported die C ++ Matrix.h Datei:

- (Void) {addTwoMatrices Matrix MatrixOne (3) - // 3x3 matrixMatrix matrixTwo (3) - // anotherint rowIndex = 0-int colIndex = 0-for (rowIndex = 0- rowIndexlt; 3- ++ rowIndex) {for (colIndex = 0- colIndexlt; 3- ++ colIndex) {// Set Matrixelemente jemandes ihrer valuesmatrixOne.setElement (rowIndex, colIndex, XXX) - // Set Matrix zwei der Elemente zu einigen anderen valuesmatrixTwo.setElement (rowIndex, colIndex, YYY) -}} Matrix matrixSum = MatrixOne + matrixTwo-

Mit Objective-C ++, Ihre Anwendungen sind in der Lage die Vorteile aller verfügbaren Bibliotheken von Drittanbietern für C geschrieben zu nehmen ++.

Menü