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...
Just trying some further variations:

with

  TMyClass = class(TInterfacedObject, IMyInterface)
   private
     FMyInterface: IMyInterface; // class type
     property MyInterface: IMyInterface
       read FMyInterface implements IMyInterface;
   public
     constructor Create(obj: TDelegateClass);
     destructor Destroy; override;
   end;

the output is:

Creating TDelegateClass
Creating TMyClass
Creating TDelegateClass
Destroying TDelegateClass

so it is actually worse with both interfaces left dangling

You get the same result with:

   TMyClass = class(TInterfacedObject, IMyInterface)
   private
     FMyInterface: IMyInterface; // class type
     property MyInterface: IMyInterface
       read FMyInterface implements IMyInterface;
   public
     constructor Create(obj: IMyInterface); << The change
     destructor Destroy; override;
   end;

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to