Es tan inexplicable.
tipo
Iinterface1 = interfaz
fin;
TcLass1 = class (tinterfacedObject, iinterface1)
Destructor destruir;
fin;
TForm1 = class (tForm)
Botón 1: tbutton;
Procedimiento formulcreate (remitente: tobject);
procedimiento botón1Click (remitente: tobject);
Privado
{Declaraciones privadas}
clase1: iinterface1; // Tenga en cuenta que esta es la interfaz iinterface1, no la clase tclass1, tclass1 no tiene este problema
público
{Declaraciones públicas}
fin;
Implementación
{$ R *.dfm}
{Tclass1}
Destructor tcLass1.destroy;
Comenzar
Showmessage ('¡Destruir!');
heredado;
fin;
procedimiento tForm1.FormCreate (remitente: tobject);
Comenzar
class1: = tcLass1.create;
fin;
procedimiento tForm1.Button1Click (remitente: tobject);
Comenzar
class1: = nil;
// Si la clase1 es la clase Tclass1, no saltará para destruir.
//¿Por qué? ¿Por qué?
fin;