Einzelnen Beitrag anzeigen

Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#5

Re: Garbage Collector dazu bringen ...

  Alt 4. Dez 2004, 13:45
Code:
Solche Objekte sind ja kein Müll (Garbage). Warum gibts du die Objekte nicht selbst frei?
Weil zum Beispiel viele Referenzen auf ein und dasselbe Object zeigen. Aber nicht auch GLEICZEITIG der Eigentümer dieses Objectes sind. Und diese Referenzen auch nicht die Entscheidungsgewalt haben, wie lange das Object existieren soll. Und es beim Freigeben dieses Objectes viel zu umständlich wäre, alle Objecte zu benachrichtigen. Weil auch aus OOP Sicht eine viel zu enge Kopplung zwischen diesen Objecten bestände.
Gezwungenermaßen programmieren aber die meisten dennoch so.

Z.B. ein Fenster zeigt dem Nutzer etwas an. Ein ObjectB (anderes Fentser, Algorithmus oder sonst was) von ausserhalb, weist dieses Fenster an, etwas anzuzeigen.
Der User schließt aber dieses Fenster. Nun müsste man normalerweise dieses ObjectB benachrichtigen, dass es eventuell seine Referenz darauf auf NIL setzt. Und das ist eben gerade der Quark, weil das Fenster gar nicht wissen soll, wer alles irgendwas anzeigt !

Jetzt taucht natürlich dass Problem auf, was ist, wenn ObjectB auf das Fenster zugreifen möchte.
Und dazu gibt es bei mir das sogenannte "Addressbroker Pattern" - ich nenn es mal so.

Das löst dieses Problem hier: http://www.delphipraxis.net/internal...light=isobject
auf wunderbare Weise.


Code:
Es wäre doch totaler Käse, wenn er es amchen würde.
Dann bist Du genauso vermessen..


Code:
Der Garbage Collector muss schließlich garantieren, dass jede Referenz auf ein gültiges Objekt zeigt
bei mir muss er das eben nicht. Deine Lösung mit normalen Pointern wäre äußerst umständlich. Jedesmal dereferenzieren ...
Sorry für meinen Ton, hab eine ziemliche Wut auf den GC.

Gibt es wirklich keine andere Möglichkeit ? .
Komme leider erst am Montag an meinen Entwicklungsrechner, mit der D2005 Trial.

Code:
und wenn du ihn trotzdem dazu bringen willst, diese Objekte freizugeben, musst du Zeiger anstelle von Referenzen verwenden.
ob es geht, wenn man (umständlich) eine Referenz übergibt, die kurz in einen Pointer umwandelt und die Referenz in einer ANDEREN Variablen wieder speichern würde ? - überleg ..
  Mit Zitat antworten Zitat