AS3: Kennzeichnung einer Variablen für die garbage-collection -, null-oder löschen?
Wenn Sie eine variable, das ist ein MovieClip, Sprite, String, Number, int, uint, oder einen booleschen Wert, Sie zu entfernen Referenz hinzufügen:
myVariable = null;
ODER
delete(myVariable);
Ich weiß nicht WIE, aber wenn Sie nicht grob missbraucht den Begriff "garbage collection", die Sie nicht benötigen, sollten Sie entweder (siehe viele ähnliche Fragen auch für andere GC würd Sprachen).
Bearbeitet meine Frage, danke.
Bearbeitet meine Frage, danke.
InformationsquelleAutor redconservatory | 2011-01-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einstellung auf null ist, ausreichend zu entfernen Sie einen Verweis auf das Objekt enthalten.
Beachten Sie, dass die syntax der
delete
Betreiber istdelete object.member
, die entferntmember
als einen Schlüssel ausobject
, und entfernen Sie einen Verweis, um was es enthält.beachten Sie, dass GC nur einmal vorkommen kann alle Verweise auf ein bestimmtes Objekt entfernt werden.
InformationsquelleAutor Metal
verwenden
null
löschen funktioniert nicht auf Variablen, die nicht definiert sind dynamisch.
und immer daran denken, /nie vergessen ... , du bist nulling-der Verweis ist NICHT das löschen des Speichers. Bedeutung abnehmen 1-Referenz ist nicht immer genug, müssen Sie entfernen Sie alle Verweise.
Beispiel:
während b nicht mehr existiert, ein.o (das ist das Objekt bereits bekannt als
b
) ist immer noch rund.also Vorsicht!!!
ja, denken Sie an eine Objekt-variable als Zeiger eher als eine Daten-Struktur. Die Datenstruktur in den Speicher und wird dort aufhalten, bis alle Verweise auf ihn entfernt. Wenn kein Zeiger vorhanden ist, die Daten gelöscht werden auf der nächsten garbage collection Zyklus
der trick, um das zu tun diese Art der Zuordnung ist niemals direkt, sondern verwenden Sie stattdessen Funktionen, die mit dieser Aufgabe. die Funktionen würden dann speichern Informationen darüber, was Objekte sind miteinander verbunden, und wenn ein Zerstöre-Funktion aufgerufen wird, werden alle Referenzen entfernt. Haben Sie einen Blick auf, wie casaLib tut es as3.casalib.org/docs/org_casalib_display_CasaMovieClip.html obwohl der code für die Verwaltung von eventlisteners, die Idee ist die gleiche. Objekte zu verfolgen, und legen Sie Sie im inneren zu zerstören-Funktion
Sorry, dich wieder zu stören, aber sagen Sie das ja auf die erste Frage oder sagen Sie ja, dass es ausreichen wird?
sorry, ich sehe, wie gerade die
yes
ist verwirrend. Mita.o = null
unda = null
wird sowohl die Arbeit in das Fall, aber ob es ausreichen wird, in Ihrer Anwendung ist schwer zu sagen, also mit beiden,a.o = null; a = null;
ist die sicherste Wette. was Sie vermeiden wollen ist die "Insel der Referenzen" der Autor bezieht sich in diesem Artikel code.tutsplus.com/tutorials/...InformationsquelleAutor Daniel