[fpc-devel] Defer keyword

Kostas Michalopoulos badsectoracula at gmail.com
Tue May 11 01:59:03 CEST 2021


On 5/8/2021 8:27 PM, Ryan Joseph via fpc-devel wrote:
> That was a bad example. It's for ANY class really.
> 
> o := TObject.Create.AutoRelease;
> 
> Then next event cycle the autorelease pool frees all the objects added to it. Very simple but effective however we can't do this in Pascal without a new permissive return type.

You do not need any special language feature for that, you can simply do 
something like

     ReleaseLater(TObject.Create)

and have ReleaseLater and ReleaseQueuedObjects procedures in a shared 
unit like

     procedure ReleaseLater(Obj: TObject);
     procedure ReleaseQueuedObjects;

and have ReleaseQueuedObjects called on app idle. LCL already has 
something like that with TApplication.ReleaseComponent but, as the name 
implies, it is only for TComponent instances. However nothing prevents 
you from making your own, it is just a few lines of code and certainly 
an app with flow complex enough to need such a construct wont be 
bothered by a few additional lines for this.

You could even use type helpers to make it look like a method :-P.

Kostas



More information about the fpc-devel mailing list