ObjectiveCeeds › Objective-C: Speicherverwaltung zu Fuß

Objective-C: Speicherverwaltung zu Fuß

Von Manfred Kreß
OCPet im Einsatz
Seite 5 von 6



Nun schauen wir uns das Speichermanagement einmal in einem Programm an.
int main (int argc, const char * argv[]) {

	printf("Pet Init\n");
	OCPet *pet = [[OCPet alloc] init];

	OCString *name = [[OCString alloc] init];
	[name setCString: "Hansi"];

	OCString *kind = [[OCString alloc] init];
	[kind setCString: "Wellenstittich"];

	printf("Setting Values\n");
	[pet setName: name];
	[pet setKind: kind];

	printf("Values release, but nothing should be freed\n");
	[name release];
	[kind release];

	[pet dump];
	printf("Pet release\n");
	[pet release];

    return 0;

}
cleanup von BAObject loggt noch wenn es aufgerufen wird, hier die Ausgabe des Programms:
[Switching to process 2292]
Running…
Pet Init
Setting Values
cleanup
cleanup
Values release, but nothing should be freed
Name: Hansi Art: Wellenstittich
Pet release
cleanup
cleanup
cleanup

Debugger stopped.
Program exited with status value:0.
Zwei Objekte werden von OCPet bei der Initialisierung allociert, zwei OCStrings von uns und ein OCPet, macht 5, bei 5 Objekten wird cleanup getriggert, macht 0. Die Retain Balance ist ausgeglichen.

« vorige Seitenächste Seite »