Der Einstieg in die iPhone / iPad Programmierung

Ich lese mich gerade in die Welt der iOS-Programmierung ein, „for fun and profit“ sozusagen. Die Hürde bei der Plattform ist etwas höher, weil man erstmal eine neue Programmiersprache (Objective C) lernen muss und zusätzlich die ganze Cocoa-API verstehen muss. Ich mache Dinge gerne gründlich, deswegen habe ich mir erstmal die Sprache an sich zu Brust genommen um dann in die iPhone-Programmierung einzusteigen.

Objective C macht auf mich erstmal einen sehr aufgeräumten Eindruck. Ich habe vorher C, Java und etwas C++ programmiert und von den Sprachen findet man einen guten Mix in Objective C wieder. Die umfangreiche Foundation- API ist vergleichbar mit dem, was man in Java vorfindet, trotzdem kann man bis auf C-Ebene hinunter. Die Objektorientierung ist angenehm gelöst, es heisst alles nur ein bisschen anders. So sind Protokolle z.B. das was man in Java Interfaces nennt.

Die Syntax ist etwas anstrengend, man merkt der Sprache deutlich an, dass die ersten Versionen vermutlich im C-Präprozessor implementiert wurden. Die vielen eckigen Klammern sind zwar erstmal ungewohnt, aber damit kommt man relativ schnell klar. Schlimmer ist, dass mit Objective C 2.0 ein Bruch erfolgte und Setter/Getter jetzt mit einem Punkt angesprochen werden können. Das spart zwei eckige Klammern ein, wirkt aber ziemlich inkonsistent.

Insgesamt ist die Sprache sehr mächtig, es gibt schöne dynamische Features. So kann man einer Klasse nachträglich Methoden hinzufügen (Categories), es gibt Dictionaries, wie man sie aus Python kennt und man kann auch mit dem for x in y Konstrukt durch solche assoziativen Speicher durchiterieren:

for (NSString *key in dictionary )
  NSLog (@”%@: %@”, key, [glossary objectForKey: key]);

Als Buch kann ich Programming in Objective-C 2.0* von Stephen Kochan empfehlen. Das Buch hat den Anspruch auch für Menschen geeignet zu sein, die bisher noch nicht in C programmiert haben. Trotzdem vermittelt es alle wichtigen Aspekte in der zu erwartenden Tiefe.

Was die Literatur zur „richtigen“ Programmierung unter iOS angeht: der Markt ist erstmal sehr unübersichtlich. Es gibt viele Bücher, aber welches davon ist gut? Ziemlich hoch gelobt wurde in letzter Zeit IPhone Programming: The Big Nerd Ranch Guide*. Wer sich die 3500 Euro für ein 7-Tage Training auf der Big Nerd Ranch nicht leisten kann, ist mit dem Buch gut beraten.
Man merkt deutlich, dass es aus Schulungsunterlagen hervorgegangen ist, aber das ist kein Manko, im Gegenteil. Man hat sofort Erfolgserlebnisse und muss nicht erst 200 Seiten Urschleim wälzen, bevor man einen Button programmieren darf. Ich kann das Buch fast uneingeschränkt empfehlen. Einziger Kritikpunkt ist, dass es für meinen Geschmack etwas Tiefgang missen lässt. Ich habe das Buch zur Hälfte durch und bis jetzt wurde das Thema Speicherverwaltung, das allen iOS-Anfängern das Genick bricht, sträflich vernachlässigt.

Zur iOS-Umgebung selbst kann ich noch nicht so viel sagen. Es wirkt alles sehr durchdacht, allerdings muss man sich das lineare Denken abgewöhnen. Jeder Pups wird über einen Callback erledigt (er heisst nur Delegate), was einfache Probleme ein bisschen verkompliziert. Aber ich denke das ist nur Übungssache.

Die Dokumentation ist mindestens auf dem Niveau der MSDN, wenn nicht sogar besser. Man kann Beispiele mit einem Knopfdruck direkt in Xcode öffnen. Die IDE ist allerdings eine Zumutung, Xcode 3 ist ein Wirrwar von Fenstern, die man ständig zur Seite schieben muss. Ich frage mich welcher ADS-Patient für das Interface-Design verantwortlich ist.
Xcode 4 dürfte die nächsten Wochen das Licht der Welt erblicken, hier findet sich alles in einem iTunes-Artigen Fenster wieder, was sich wesentlich angenehmer anfühlt. Allerdings haben die Previews von Xcode 4 noch ein paar hässliche Bugs, so lange die Final noch nicht draußen ist, würde ich Anfängern raten, bei Xcode 3 zu bleiben.

Was braucht man, um erstmal loszulegen? Ein gutes Buch, einen intel-Mac / Hackintosh und früher oder später ein „richtiges“ iOS-Gerät. Es genügt ein alter iPod-Touch, aber ohne geht es kaum. Der Simulator kann bestimmte Dinge nicht (Gravitationssensor, Kamera) und verhält sich auch manchmal ein klein bisschen anders (ich hatte speziell bei der Maps-API Probleme). Danke an Semmi, der mir so selbstlos seinen iPod Touch zur Verfügung gestellt hat. Ich verspreche, Du bekommst ihn noch in diesem Leben zurück 😉

Als Entwickler kann man kann nur Anwendungen auf iOS Geräten installieren, wenn man ein Entwicklerzertifikat hat, das kostet pro Jahr 79 Euro. Das ist die einzige Kröte, die man schlucken muss. Ob das gerechtfertigt ist, vermag ich nicht zu sagen, aber man kann sich so ein Zertifikat auch teilen und dann bis zu 100 iOS-Geräte bestücken. Das klappt natürlich nur mit Leuten, denen man halbwegs vertrauen kann.

*=affiliate Link