Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
3. Nov 2011
Solange immer nur Einer gleichzeitig für die Freigabe verantwortlich ist, ist es vollkommen egal, wieviele Referenzen auf ein Objekt zeigt.
Es sollte nur sichergestellt werden, daß keine fremden Referenzen mehr in Umlauf sind, sobald das Objekt freigegeben wird.
Das ist eigentlich die Natur von Objektzeigern, denn sonst könnte man die nichtmal als Parameter weitergeben, wenn es nur eine...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
3. Nov 2011
Man kann Interfaces auch ohne Referenzzählung laufen lassen.
Dann muß man entweder noch Zugriff auf die Objektreferenz haben oder man baut sich eine "gib dich frei"-Methode mit ein, worüber man das Interface dann freigeben kann.
Aber da ist zu beachten, daß bei freigabe alle übrigen Referenzen, sollten noch welche vorhanden sein, zum Absturz führen können, wenn diese feigegeben werden und...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
3. Nov 2011
Aber nur bei einem "Interface", aber nicht bei Objekten (es sei denn ein Interface wurde angegeben und die eingebetteten Objekte werden über das Interface referenziert/angesprochen)
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
3. Nov 2011
Objekte haben keinen Referenzzähler (standardmäßig), also macht Delphi da auch nichts, beim Kopieren/Freigeben der Objektreferenz.
Das Einzig umständliche ist, daß man interfaces noch "zusätzlich" erstellen/verwalten muß.
Es wäre ja zu schön, wenn man aus einem Objekt (automatisch) ein Interface generieren könnte.
(aber wenn ich mir das grad überlege ... ich glaub das wäre möglich ... muß...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
18. Mär 2011
Nimm function GetObject: TObject; mal in dein Interface mit auf :wink:
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
18. Mär 2011
Sowas ist bei Objekten (also Pointern) rein teschnich garnicht möglich, denn
Keiner weiß wo alles Referenzen (Variablen, welche auf das Objekt zeigen) existieren.
Einzige Möglichkeit wäre, wenn der Programmierer irgendwie seine gewünschte Variable "registriert" und somit um das Nil-en bittet.
Solch eine Registrierungsstelle müßtest du aber erstmal implementieren, da es sowas standardmäßig...