AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Instanz sich selber zerstören lassen?

Ein Thema von Minz · begonnen am 19. Nov 2003 · letzter Beitrag vom 19. Nov 2003
Antwort Antwort
Seite 2 von 2     12   
OLLI_T

Registriert seit: 13. Okt 2003
Ort: Nähe Wetzlar / Hessen
143 Beiträge
 
Delphi 5 Enterprise
 
#11

Re: Instanz sich selber zerstören lassen?

  Alt 19. Nov 2003, 14:15
Hallo Minz!

Hab gerade mein Festplatte abgekehrt und dachte bevor ich´s in den gelben Sack stecke ...

Gegenfrage: Konstruiere doch bitte mal ein praktisches Beispiel, wann es sinnvoll ist, dass sich die Instanz einer Klasse selber freigibt? Woher weiss der Programmcode drumherum, dass diese Klasse sich ins Nirwana verabschiedet hat?

Gruss

OLLI
No Pain No Gain!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Instanz sich selber zerstören lassen?

  Alt 19. Nov 2003, 14:20
@mr2: stimmt, das wörtschen "class" hab ich übersehen. Aber wie macht ich das dann mit der selbstzerstörung wenn ich immer TComponent.methode aufrufen muss? also:

Delphi-Quellcode:
myirgendwas := TIrgenwas.create;
[...]
myirgendwas.machwas; //vermutlich so nicht da ich ja in dem fall wieder das ganze als methode der instanz aufrufe
[...]
Tirgenwas.machwas; //so vermutlich auch nicht weil ja jetzt nicht bestimmt ist welche instanz zerstört werden soll
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#13

Re: Instanz sich selber zerstören lassen?

  Alt 19. Nov 2003, 14:33
@Olli
1. Selbstorganisierende Prozesse
2. Weil eine Instanz sich selber zerstört heißt das nicht, dass die Hauptanwendung, nichts davon mitbekommt. Nur liegt die Kontrolle der Selbstzerstörung nicht bei der Hauptanwendung, dass ist der Unterschied.
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#14

Re: Instanz sich selber zerstören lassen?

  Alt 19. Nov 2003, 14:45
Zitat von Minz:
Weil eine Instanz sich selber zerstört heißt das nicht, dass die Hauptanwendung, nichts davon mitbekommt. Nur liegt die Kontrolle der Selbstzerstörung nicht bei der Hauptanwendung [...]
Hallo Minz,
wie stellst Du sicher, dass niemals Referenzen auf das Objekt gehalten werden, bzw. wirklich alle Referenzen aufgehoben werden, wenn die "Hauptanwendung benachrichtigt wird"?

Darüber hinaus macht es keinen Unterschied, ob die "von außen"AnObject.Free; oder "von innen"Self.Free aufrufst, sofern anschließend nicht mit dieser Referenz arbeitest.
Letzteres ist kritisch, wenn Du mit der StdImplementierung von Delphis Interfaces arbeitest oder Du nicht hundertprozentig sicherstellen kannst, das nicht irgendwo (zB in Listen von Komponenten) noch auf das Objekt referenziert wird.

Eine oft elegantere Methode besteht darin, so lange eine Referenz auf das Objekt zu halten, bis es den Abschluss seiner Arbeit dem Klienten meldet und dieser seine Referenz freigibt. Sollte dies der letzte Verweis auf das Objekt gewesen sein, wird es freigegeben.
gruß, choose
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#15

Re: Instanz sich selber zerstören lassen?

  Alt 19. Nov 2003, 14:53
ist es für Euch ein Problem sicherzustellen, dass keine Referenzen mehr auf ein Objekt existieren?

Ich jedenfalls weiß, wie mein Code funktionieren soll, und an welcher Stelle Referenzen sind.

Wäre mir lieber Ihr sagt mehr zu der Eingangsfrage als die Sinnfrage zu diskutieren.

Und unter Umständen kann es doch einen Sinn machen wer die Kontrolle über die Zerstörung hat.
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#16

Re: Instanz sich selber zerstören lassen?

  Alt 19. Nov 2003, 15:32
Die eingangsfrage wurde doch mit 'Self.Free;' befriedigt...da bleibt ja nur noch die sinnfrage

Wenn sich das object zB. in einer hierarchie befinden würde, dann is es durchaus sinnvoll! Das object erkennt, dass es nicht länger benötigt wird und zerstört sich. Im destruktor nabelt es sich vom parent ab und benachrichtigt die notifier etc., um dann selbstmord zu begehen 8) ..nur als beispiel.

cu.
maximov.
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#17

Re: Instanz sich selber zerstören lassen?

  Alt 19. Nov 2003, 15:52
Naja aber der Sir Thornberry hatte einen Einwand

Worauf mr2 mit class procedure ankam

und des hatten wir noch nicht ganz geblickt mit dem class.

Wenn jetzt einer kommt und sagt, braucht man nicht, und ich sicher sein kann, dass das Objekt dann korrekt geselbstmordet ist, dann ist alles ok

achso @maximov an sich habe ich nichts gegen sinnfragen, wenn man dahinter raushört: "ich habe interesse" und nicht "das ist schwachsinn".

es ist ein für mich ein Unterschied ob jemand danach sagt "siehst du hab ichs doch gesagt" oder "sogesehen ist es nicht sinnvoll". Nur vorher von etwas sinnlosem auszugehen ohne die Hintergründe zu kennen oder weil man sich nichts vorstellen kann blabla
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#18

Re: Instanz sich selber zerstören lassen?

  Alt 19. Nov 2003, 18:52
Is scho recht Ich zu mindest finde objekt-suizid in einigen fällen sehr sinnvoll! Und dass mit class ist IMAO blödsinn, da ja keine referenz existiert, die sich selbst morden könnte

cu.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz