Auf dieser Seite stellen wir Tools, die zur Entwicklung von iPhone Apps notwendig sind und unsere Software für die Erstellung des Kartenmaterials vor.


Objective-C

Die Programmiersprache für die Erstellung von iPhone Applikationen ist Objective-C, die eine Obermenge der Programmiersprache C ist. Deshalb ist es möglich die Syntax von C und Objective-C in einer Anwendung für das iPhone zu mischen. Klassen werden erzeugt, in dem man eine Header-Datei mit der Endung .h und ihre Implementierungsdatei (Endung .m) mit gleichem Namen erstellt. In dem Header werden die öffentlichen Teile (Namen und Typen von Instanzvariablen, Methoden mit ihren Parametern und Rückgabewert etc.) der Klasse deklariert. In der Implementierungsdatei importiert man die Header-Datei und schreibt den Code für die Methoden. Hier deklariert man auch die lokalen Variablen, die nur für diese spezielle Klasse zur Verfügung stehen und nicht nach außen sichtbar sein sollen.

Die iPhone Programmierung bedient sich diverser Vorlagen für den Entwurf einer Applikation (design patterns). Eines der wichtigsten und am häufigsten verwendeten ist das Model-View-Controller (MVC) Entwurfsmuster. Es dient dazu, Objekte nach ihrer Rolle in der Applikation einzuteilen. Man unterscheidet Model-Objekte, View-Objekte und Controller-Objekte. Während das Model das zugrunde liegende Datenmodell repräsentiert, ist das View-Objekt für die Visualisierung der Daten zuständig und nimmt Benutzerinteraktionen über Buttons, Textfelder etc. entgegen. Es gibt keine direkte Kommunikation zwischen den beiden Objekten. Dies wird durch den Controller bewerkstelligt, der sowohl das Datenmodell über Instanzvariablen verändert als auch die Daten für die View bereitstellt.

Xcode

Als iPhone Entwickler hat man keine freie Wahl der Entwicklungsumgebung. Die Erstellung von iPhone Apps ist nur mit Tools von Apple möglich, die jedoch sehr ausgereift und ideal zu diesem Zweck angepasst worden sind.

Xcode ist Apples Gegenstück zu anderen IDEs wie z.B. Eclipse. Mit dieser Entwicklungsumgebung schreibt man Code, kompiliert und startet das Programm. Darüber hinaus bietet Xcode zusätzliche Tools zur Entwicklung von grafischen User-Interfaces sowie zur Leistungsmessung. Die neuste Version (Xcode 4) bietet neben verbessertem Layout einen schnelleren Compiler (Apple LLVM), der konsistent im Hintergrund läuft und Compilerfehler schon während des Codeschreibens anzeigt und Verbesserungsvorschläge unterbreitet.

Das Xcode-Hauptfenster besteht aus einem Navigations-, Editor-, Utility- und Debug-Bereich. Im Navigationsbereich hat man Übersicht über alle Klassen des Projekts, deren Code im Editor-Bereich dargestellt wird. Im Utility-Bereich hat man weitere Informationen zu der ausgewählten Klasse wie z.B. Typ der Klasse, Pfad und Zugehörigkeit. Ebenfalls im Utility-Bereich hat man Zugriff auf vorgefertigte Code- und Objekt-Bibliotheken, die man mittels Drag-and-Drop im Editor-Fenster platzieren kann. Im Debug-Bereich werden Informationen zur Ausführung des Programms dargestellt, die man durch Klicken auf den Run-Button startet. Das Programm wird darauf in einem Simulator ausgeführt.

Map Creator

Unsere iPhone Anwendung unterstützt Wegpunktenavigation. Um das zu ermöglichen haben wir für das Neuenheimer Feld einen Wege - Graphen angelegt. Dieses Vorhaben wäre in einem Texteditor nicht möglich (über 100 Knotenpunkte, mehr als 150 Verbindungen). Aus diesem Grund haben wir ein kleines Tool geschrieben, um die Wegpunktegraphen für unsere App mit einer grafischen Oberfläche anlegen zu können.

Der Programmaufbau ist sehr simpel. Im ersten Schritt gibt der User die Längen- und Breitengrade des linken oberen und rechten unteren Punktes der Karte ein. Außerdem kann er eine Bilddatei laden, die dann im Hintergrund angezeigt wird. Auf der Bilddatei werden dann mit einem Linksklick Knotenpunkte verteilt. Klickt man zwei Punkte hintereinander an, wird eine Verbindung hergestellt. Am Ende wird der Graph dann in einer Art csv Format, das unsere App lesen kann, abgespeichert.
Programmiert wurde das Tool für MAC OS 10.6. Das hatte den Vorteil, dass wir beinahe die gleichen APIs und Frameworks wie auf dem iPhone verwenden konnten. Der größte Unterschied besteht darin, dass das UIKit, das alle UI Elemente des iOS wie UIWindow, UIView, UIButton, etc. umfasst, auf dem Mac natürlich nicht zur Verfügung steht. Das Interface Framework auf dem Mac heißt AppKit und funktioniert ähnlich, ist aber natürlich nicht völlig identisch.