Leseprobe
Inhaltsverzeichnis
1 Plattform
1.1 iOS
1.2 Devices
2 Objectiv-C 2.0
2.1 Aufbau von Klassen
2.2 Methoden & Konstruktoren
2.3 Setter & Getter
2.4 Kategorien & Extensions
2.5 Protokolle
2.6 Memory Management
3 Cocoa-Framework
3.1 Foundation Framework
3.2 Application Kit
3.3 Cocoa Touch
4 Entwicklung fürs iPhone
4.1 Entwicklungsumgebung
4.2 iPhone SDK
4.3 Apple Developer Programm
1 Plattform
1.1 iOS
iOS (vormals iPhone OS) wurde am 9. Januar 2007 vorgestellt. Das für mobile Endgeräte (siehe 1.2) entwickelte Betriebssystem basiert auf Mac OS X, wobei es an den ARMProzessor1 angepasst wurde.
iOS wurde auf die Bedienung mit Gesten, welche direkt über die Finger ausgeführt werden entwickelt. Ein Eingabestift o.Ä. ist nicht nötig. Des Weiteren können Gesten mit mehreren Fingern gleichzeitig ausgeführt werden (Multi Touch). Das iPhone mit iOS war das erste Smartphones welches sich mit MultiTouch am Markt behaupten konnte. iOS liegt zur Zeit in Version 5 vor.
1.2 Devices
iOS wurde für den Einsatz mit dem iPhone entwickelt, welches am 29. Juni 2007 in den Vereinigten Staaten veröffentlicht wurde. Mittlerweile ist das 5. iPhone Modell (iPhone 4s) auf dem Markt.
Neben dem iPhone kommt iOS auf dem Tablet iPad sowie dem iPod Touch zum Einsatz.
2 Objectiv-C 2.0
Objectiv-C 2.0 ist eine objektorientierte Programmiersprache. Sie basiert auf C und bildet eine strikte Obermenge. C-Programme können also auch mit einem Objectiv-C 2.0 Compiler kompiliert werden.
Objectiv-C findet heutzutage primär Anwendung in der Entwicklung für Mac OS X und iOS - auf anderen Plattformen konkurriert es mit C++, welches ebenfalls auf C basiert.
2.1 Aufbau von Klassen
Der Klassenaufbau ähnelt dem von C++. Für jede Klasse existiert ein Header (*.h) und die Implementation (*.m). Im Header werden die Instanzenvariablen und die Methodensignaturen (und somit die API) der Klasse definiert.
Listing 1: Syntax.h
Abbildung in dieser Leseprobe nicht enthalten
Listing 2: Syntax.m
Abbildung in dieser Leseprobe nicht enthalten
2.2 Methoden & Konstruktoren
In Objectiv-C gibt es 2 Typen von Methoden: Klassen- und Instanzmethoden.
Instanzmethoden sind vergleichbar mit den Methoden aus Java und anderen objektorien- tierten Programmiersprachen. Die zu nutzende Syntax unterscheidet sich jedoch stark von diesen.
− (int) addiereWert1: (int) value1 andWert2 : (int) value2;
Das Minus gibt an, dass es sich um eine Instanzmethode handelt.
Die ganze Methode heißt addiereWert1:andWert2 und hat die Parameter value1 und value2, deren Rückgabetyp int ist. Durch diese anfangs ungewöhnlich wirkende Syntax entsteht gut lesbarer Code.
Klassenmethoden werden mit einem Plus gekennzeichnet. Sie beziehen sich nicht auf eine Instanz, sondern auf die ganze Klasse.
Sie werden unter anderem genutzt um Konstruktoren bereitzustellen. Da Objectiv-C eine hardwarenahe Programmiersprache ist, muss sich um die Speicherverwaltung selbst gekümmert werden. Bevor ein Objekt konstruiert werden kann, muss also der Speicherplatz angefordert werden.
Abbildung in dieser Leseprobe nicht enthalten
Zuerst wird Speicherplatz für einen NSString angefordert und das zurückgegebene Objekt über init initialisiert.
Nahezu alle Klassen aus dem Foundation Framework (siehe 3.1) bieten auch so genannte convenicene Konstruktoren. Bei diesen können verschiedene Attribute schon gesetzt werden. Bei Klassen aus dem Foundation Framework für Mac OS X wird für so erzeugte Objekte auch die garbage collection (siehe 2.6) aktiviert.
2.3 Setter & Getter
Setter- & Gettermethoden sollten nach folgender Konvention programmiert werden:
Listing 3: GetterSetterBeispiel.h
Abbildung in dieser Leseprobe nicht enthalten
Dabei muss der Variablenname in der Methode groß geschrieben werden. Wenn die Me- thoden so programmiert werden, kann über die Punktnotation auf die Instanzvariablen zugegriffen werden.
Abbildung in dieser Leseprobe nicht enthalten
Mit Properties wird der Entwickler beim Bereitstellen der Setter- & Gettermethoden unterstützt.
Dafür muss im Headerfile vor die entsprechenden Variablen ein @properties geschrieben werden. Durch den Parameter (readonly) wird nur der Getter generiert. Falls ein eigner Setter oder Getter im Code angegeben ist, wird diese Methode nicht durch @properties überschrieben. So sind auch individuelle Methoden möglich.
[...]
1 http://www.arm.com, abgerufen am 12.11.2011)