DeleteObject
DeleteObject, DeleteObject(pattern)
Stack | Beschreibung | |
---|---|---|
Stack(In) | persistentes/transientes Objekt | |
Stack(Out) | - |
Das Objekt wird
- mit einem Bit als logisch gelöscht markiert
- aus allen bekannten Root-EP-Collections entfernt (siehe DeregisterObject)
- in die Garbage-Collection seiner Klasse eingefügt.
Die Operation ist zu CreatePersObject / CreateTransObject(,KEEP) invers, d.h. aus den Collections, in die es durch CreatePersObject eingetragen wurde, wird es durch DeleteObject entfernt. Um zu vermeiden, dass viele Collections umsonst durchsucht werden, richtet sich auch DeleteObject nach den mit SetLayer, SetDomain(WRITE) und SetPattern getroffenen Einstellungen.
Den Zusammenhang zwischen Layer, Domain und Bitpattern für Inheritance zeigt folgendes Beispiel sowie folgendes Code-Beispiel.
Transiente Objekte werden durch DeleteObject logisch gelöscht und anschleißend an der GarbageColleciton angemeldet (CX_GARBAGE_MANAGER։։Register), sodass das Objekt gelöscht wird, sobald es durch keine Variable mehr referenziert wird.
Ein per DeleteObject gelöschtes Objekt kann mit UndeleteObject wieder reaktiviert werden. Bei transienten Objekten wird lediglich der logische Löschstatus zurückgesetzt, das Objekt wird nicht bei der GarbageCollection wieder abgemeldet.
Ein Objekt kann mittels der Funktion CX_SIMPLE::Deleted() abgefragt werden, ob es (logisch) gelöscht ist oder nicht.