Einstieg für Delphi-Programmierer/kompletten Neuling?

sECuRE schrieb:
Hi,

retain reserviert also den Speicher und gibt das Objekt nicht frei beim Beenden der aktiven Funktion/Prozedur/wasauchimmer. Aber das mit dem Zähler habe ich nicht verstanden?

cu
Du musst dir das so vorstellen: Ein Ojekt kann von mehreren Instanzen genutzt werden. Also darf man das Objekt erst löschen, nachdem es der letzte Nutzer freigegeben hat. Genau das wird über den Retain-Counter geregelt.
Beim Anlegen eines Objekts wird der Retain-Counter auf 1 gesetzt, durch den Retain-Befehl wird er um 1 erhöht, mit Release um 1 erniedrigt. Geht der Counter auf 0, wird das Objekt vom OS gelöscht.
Um die Sache kompliziert zu machen: Man kann für ein Objekt mit alloc Speicher beschaffen und es mit init selbst initiialisisen oder aber beides von einer sog. Komfort-Methode automtisch erledigen lassen.
Die Convinient-Methoden sind alle Klassenmethoden, also jene, die mit einem + beginnen (Instanz-Methoden beginnen mit einem -).
Die so angelegten Objekte wandern alle in einen sog. Autorelease-Pool. Einen davon legt Cocoa automtisch an, weitere eigene Pools sind möglich, bei Threads sogar Pflicht.
Werden solche Objekte innerhalb einer Methode angelegt, werden sie automatisch gelöscht, nachdem die Methode verlassen wurde, genauer: nach Eintritt in die Main-Run-Loop.
Das kann durchaus störend sein. Wenn ich z.B. ein Objekt innerhalb der awakeFromNib-Methode anlege (eine Mehtode, die beim Programmstart automatisch ausgeführt wird), wäre das Objekt nach dem Verlassen der Methode verschwunden. Deshalb lege ich das Objekt mit retain an, womit dessen Counter auf 2 gesetzt wird. Nach dem Verlassen der Methode steht er auf 1, lebt also weiter. Nur muss ich es dann zum Programm-Ende auch selbst releasen.
 
sag ich doch...
 
"Cocoa Programming for Mac OS X"
Second Edition

Autor: Aaron Hillegass
ISBN 0-321-21314-9

Danach kannst Du alle Cocoa Grundlagen. Um dieses Buch führt praktisch kein Weg drumherum :)

Zusätzlich:
http://www.cocoadevcentral.com/
Enthält ein sehr schönes Tutorial zu Core Data
 
Zurück
Oben Unten