Ich arbeite Objective-C auf dem Lernen, und ich versuche, ein Gefühl für die Speicherverwaltung zu erhalten. Ich bin ziemlich vertraut mit C-Speicherverwaltung, aber ich versuche herauszufinden, wie anders ObjC ist.Objective C-Speicherverwaltung für anonyme Objekte
Lassen Sie uns sagen, dass ich eine Klasse Complex
genannt, die zur Aufnahme von komplexen Zahlen verwendet, die ein Verfahren -(Complex*)add:(Complex*)c;
hat, dass die in komplexe Zahl zu self
weitergegeben fügt (Complex
ist ein veränderliches Objekt, sagen wir mal).
So kann ich es nenne diese Art und Weise:
Complex *c = [[Complex alloc] withReal: -3.0 andImag: -2.4]; // c = -3.0-2.4i
[c add : [[Complex alloc] withReal: 1.0 andImag: 2.0]]; // now c = -2.0-0.4i
Was für das temporäre Objekt in dem Speicher geschieht in dem Aufruf von add
erstellt verwendet? Ich nehme an, es ist ein Speicherleck; Ist das der richtige Code?
Complex *c = [[Complex alloc] withReal: -3.0 andImag: -2.4]; // c = -3.0-2.4i
Complex *b = [[Complex alloc] withReal: 1.0 andImag: 2.0]; // b = 1+2i
[c add : b]; // now c = -2.0-0.4i
[b release];
Bonus noob Frage: würde die Objective-C 2.0 GC mit der Situation umgehen?
Danke für die GC-Tipps - aber es wird eine Weile dauern, bis ich den Kratzer habe, um mit einem iPhone zu spielen;) – decitrig
Sicher Sache. GC ist großartig, wenn Sie es verwenden können, obwohl es bedeutet, dass Sie die Tiger-Unterstützung löschen müssen und alle verwendeten Frameworks auch GC unterstützen müssen. Aber mit der Zeit wird das immer alltäglicher werden und wer weiß, vielleicht werden die iPhones, wenn iPhones schneller werden, auch GC unterstützen. :-) –