Mittwoch, 3. Februar 2010

Fast einen Tag...

... habe ich damit verbracht, einen blöden Programmierfehler zu finden.
iPhone-Programmierung ist doch was feines! Insbesondere Objective-C. Wenn man wie ich von der Java-Front kommt (und nebenbei die hohe Schule der Programmierung damals mit Pascal und C gelernt habe), und so an den Garbage Collector gewöhnt ist, dann
muss man schon ein wenig umdenken, wenn man sich um die Speicherverwaltung selbst kümmern muss...

Also, für alle Nicht-Programmierer: Der Garbage Collector räumt sämtliche Objekte weg,
die nicht mehr gebraucht werden im Computerspeicher. Ansonsten vermüllt der Speicher und irgendwann..... geht gar nix mehr.

Und da haben sich ein paar schlaue Leute gedacht: Programmieren wir doch einfach eine Müllabfuhr - den Garbage Collector. Das funktioniert ganz gut, hat nur einen Nachteil:
Es macht den Rechner langsamer. Aber es erleichtert auch das Programmiererleben, eine Sache weniger, um die er sich Sorgen machen muss. Und eine Fehlerquelle weniger. Gut so!

Nun ist Geschwindigkeit aber beim iPhone durchaus eine Sache, die wichtig ist.
Es ist halt keine superschnelle Maschine. Und daher hat man auf einen Garbage Collector verzichtet. Juhu, eine Fehlerquelle mehr. Aber iPhone-Programme sind
i.A. nicht solche Riesengebilde wie auf Desktoprechnern oder auf Servern.
Und daher hält sich der Mehraufwand in einem gewissen Rahmen....


Für die Experten:

Ich habe folgendes gemacht:

l_listData ist eine Membervariable vom Typ NSMutableArray.

l_listData = [NSArray arrayWithObjects:@"Kunden vewalten",@"Angebot erstellen", @"Verfügbarkeit der Ware",@"Rechnung schreiben",@"Konfiguration", @"Erstanmeldung", @"Information", nil];

Was ich vergessen habe, ist folgendes:

[l_listData retain];

Ohne diesen Befehl löscht das Betriebssystem das Array automatisch, da das Betriebssystem denkt, es gibt keine Verweise auf das Array. Und löscht es somit.

Also: retain nicht vergessen!

Nullen...

In der Mathematik ist ja bekanntlich 0+0 = 0. Allerdings kann in der Realität die Summe aller Nullen doch eine beängstigend große Zahl sein.

Dienstag, 2. Februar 2010

Winter...

"Im tiefsten Winter erfuhr ich schließlich, dass in mir ein unbesiegbarer Sommer lag."

Albert Camus