[fpc-pascal] Delegate Interface class does not seem to be referenced counted
Tony Whyman
tony.whyman at mccallumwhyman.com
Wed Aug 10 15:04:21 CEST 2016
Marcos,
Thanks for the suggestions, but I had already tried the first variation:
TMyClass = class(TInterfacedObject, IMyInterface)
private
FMyInterface: IMyInterface; // class type
property MyInterface: IMyInterface
read FMyInterface implements IMyInterface;
public
constructor Create(obj: IMyInterface);
destructor Destroy; override;
end;
and that did not work.
Destroying FMyInterface in the destructor does not make a difference -
mainly because the TMyClass destructor is not being called anyway.
On 10/08/16 13:57, Marcos Douglas wrote:
> Hi,
>
> See the "problem" bellow:
>
> TMyClass = class(TInterfacedObject, IMyInterface)
> private
> FMyInterface: TDelegateClass; <<< HERE >>>
> property MyInterface: TDelegateClass
> read FMyInterface implements IMyInterface;
> public
> constructor Create(obj: TDelegateClass);
> destructor Destroy; override;
> end;
>
> and...
>
> procedure TDelegateTest.DoRun;
> var Intf: IMyInterface;
> Intf2: IMyInterface;
> begin
> Intf := TMyClass.Create(TDelegateClass.Create); <<< HERE >>>
> Intf2 := TDelegateClass.Create;
>
> You're treating the instance using class types instead of interface type.
>
> You can:
>
> 1. Change FMyInterface: TDelegateClass to FMyInterface: IMyInterface;
> or
> 2. Destroy FMyInterface on destructor.
>
> Best regards,
> Marcos Douglas
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
More information about the fpc-pascal
mailing list