Einzelnen Beitrag anzeigen

Schokohase
(Gast)

n/a Beiträge
 
#7

AW: Interfaces und nil setzen

  Alt 2. Jun 2018, 00:21
Dazu kann man pauschal eigentlich gar nichts sagen, denn ein Interface bedeutet nicht automatisch auch Referenzzählung.

Die Referenzzählung erfolgt in der konkreten Implementierung des Interfaces - oder eben nicht, je nach Implementierung.

Ein TDataModule, TForm ... bzw. alles was von TComponent abgeleitet ist, kann zwar mit Interfaces ausgestattet werden, kommen aber von Haus aus ohne Referenzzählung.
Was? Delphi (COM) Interfaces kommen alle von Haus aus mit Referenzzählung. Es geht hier um IInterface/TInterfacedObject Nachkommen.
Du hast insofern Recht, als dass immer die _AddRef/_Release Methoden aufgerufen werden.

Ob die implementierende Klasse damit etwas anfängt, hängt ... von der implementierenden Klasse ab.

TFrame, TDataModule, ... das hört nicht nach Nachfahren von TInterfacedObject an. Die leiten sich von TComponent ab und das kümmert sich um die Zählung und automatische Freigabe bei 0 Referenzen einen feuchten P...
  Mit Zitat antworten Zitat