Lionstarrs Linux Blog

Ein Blog über Linux und die Welt

Objective-C Tipps für Einsteiger

Von lionstarrEin Kommentar »
Objective-C Tipps für Einsteiger

Da ich momentan dabei bin, in die iPhone-Programmierung einzusteigen, sah ich mich gezwungen, Objective-C zu lernen. Was für mich anfangs nur eine Ansammlung von recht-eckigen Klammern und ungewohnter Syntax war, ist nun eine Sprache, die ich respektiere und schätze. Ein Problem mit Objective-C ist meiner Meinung nach, dass es sich teilweise sehr anders als sonstige Sprachen verhält, was schon manch einen Einsteiger zur Verzweiflung gebracht hat. Deswegen will ich in diesem Artikel auf die typischen Einsteigerfehler eingehen, die oft genug in meinem eigenen Code zu finden waren. Ich gehe davon aus, dass dem Leser die grundlegende Syntax von Objective-C bekannt ist.

  1. Ein vergessenes @
    Ein Fehler, den ich gleich in meinem ersten Programm gemacht habe ist, das @ zu vergessen. In Objective-C werden Strings (normalerweise) nicht nur von Anführungszeichen umgeben, sondern, man muss zusätzlich noch ein @ vor den String setzen. Dies ist notwendig, weil Objective-C Strings nicht einfach ein Array von char* sind (wie in C), sonder eine eigene Klasse NSString haben. Wenn man @”test” tippt, so erstellt man eine neue Instanz der Klasse NSString – daher auch die kryptische Warnung.
    forgetting-at
  2. Vergessenes init/alloc
    In Objective-C ist es erlaubt, Nachrichten an nil zu senden – es erscheint keine Warnung, es wird kein Fehler erzeugt. Das führt dazu, dass man nur zu leicht vergessen kann, ein Objekt neben dem Angeben auch zu erstellen und zu initalisieren. Das gemeine an diesem Fehler ist, dass man sich stundenlang mit dem Debugger auf die Suche nach ihm machen kann, ohne ihn zu finden – denn es ist eben kein Syntax-Fehler in Objective-C. Es bringt nur oft nicht das gewünschte Ergebnis.
    forgetting-init
  3. Überschriebene IBOutlets
    Wenn man eine Instanzvariable als IBOutlet definiert und sie im Interface Builder verwaltet, dann wird diese automatisch vom Interface Builder erstellt & initialisiert. Wenn man sie später noch einmal initalisiert, dann überschreibt man das Objekt des Interface Builders, und die Änderungen an dem Objekt werden nicht mehr angezeigt. Außerdem leakt man RAM. Also merke: Alle Objekte müssen irgendwie erzeugt werden, aber Interface Builder erzeugt die Objekte bereits.
    iboutlet-plus-init
  4. Memory Management
    Schon das Wort bringt manchen erfahrenen Programmierer zum schwitzen. Auf dem iPhone muss man den gesamten Speicher selber verwalten. Das heißt, wenn man ein Objekt erstellt, dann muss man es auch wieder löschen. Es geht zuweit, hier eine Einführung in die Methode des Referenzen-Zählens einzuführen, aber es reicht eigentlich zu sagen, dass man in jedem Block für jedes [object alloc/retain] ein [object release] haben sollte. Für eine ausführlichere Einführung in die Methodik empfehle ich Mobileorchards Sammlung von Links zum Thema. Ein Trick, den ich euch nicht vorenthalten will, ist die Methode retainCount, die – auf ein beliebiges Objekt angewendet – den aktuellen Stand des Referenzen-Zählers angibt. Wer sich beim Memory-Management schwertut, der sollte sich mal das Tool LLVM/Clang Static Analyzer ansehen – die Anwendung für iPhone Programme wird auf Oiledmachine ausführlich beschrieben. Das Tool tut nichts anders, als Memory Leaks im Code zu finden.
    memory-management
  5. Stanford iPhone Programming auf iTunesU
    Das ist der Weg, wie ich überhaupt zum iPhone Programmieren gekommen bin: Die amerikanische Universität Stanford stellt alles Material zum aktuellen iPhone Programming Course online zur Verfügung. Die Videos gibst bei iTunes U, alle anderen Informationen auf der Stanford Webseite des Kurses.

Ich hoffe, mit diesen Tipps konnte ich einigen Programmierern den Einstieg in die Programmierung in Objective-C / für das iPhone ein wenig vereinfachen. Wenn ihr noch Tipps habt, die ihr mit anderen Programmieren teilen wollt, oder wenn irgendetwas nicht stimmt, inkorrekt ist oder einfach ungenau: nutzt die Kommentar-Funktion.

In: , ,
— May 7, 2009


Kommentare

(verstecken)
      RSS
  1. Aaimless

    May 23, 2009 @13:23:56

    “Schon das Wort bringt manchen erfahrenen Programmierer zum schwitzen.”

    Memory Management kommt im 1. und 2. Semester Informatik C/C++ Grundkurs. Wen das zum Schwitzen bringt, kann ja so erfahren nicht sein ;)

Gib deine Meinung ab!


(notwendig)






Stoppt die Vorratsdatenspeicherung! Jetzt klicken & handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien: