Cocoa

Es folgen alle Einträge mit dem Schlagwort Cocoa.

Du kannst den RSS-Feed dieses Schlagwortes abonnieren.


Unit Tests für iPhone SDK

30. August 2008

Cocoa beinhaltet eine kleine Unit Tests Suite, die für Cocoa Touch leider (noch) fehlt, da viele Abhängigkeiten der Unit Test Suite – z.B. CoreData – im iPhone SDK nicht verfügbar sind. Glücklicherweise gibt es bei Google Code ein Projekt namens Google Toolbox for Mac, welches unter anderem auch Unit-Test-Funktionalität anbietet.

Irgendwie hat es etwas Skurriles, dass ausgerechnet Google, welche dank Android im Smartphone-Bereich eine gewisse Konkurrenz für Apple geworden sind, Funktionalität für das iPhone SDK anbieten, bevor Apple es tut.


Faustregeln für Memory Management in Cocoa

20. Juli 2008

Eigentlich ziemlich simpel, befolge einfach diese beiden Regeln:

Die Nachrichten alloc, copy und retain, sowie Nachrichten, die mit einem dieser Wörter beginnen (z.B. copyWithZone:), erhöhen den Retaincount um 1. Hat man einem Objekt eine dieser Nachrichten geschickt, etabliert man damit im Objektgraphen eine Relation. Achte darauf, beim Auflösen dieser Relation ein release zu senden, z.B. in dealloc.

Gehe bei sonstigen Rückgaben von Nachrichten wie z.B. arrayWithObjects:  von einem Retaincount von 0 aus! Solche Nachrichten liefern immer Objekte zurück, denen ein autorelease gesendet wurde und die deswegen beim nächsten Referenzpunkt eines Autoreleasepools ein release erhalten. Achte darauf, wenn du selbst solche Methoden implementierst/überschreibst, der Rückgabe ein autorelease zu senden. Willst du solche Rückgaben dauerhaft behalten, sende im Codeblock des Besitzers ein retain.

Also bei alloc, copy, retain: retained. Bei sonstigen Rückgaben: autoreleased.