[fpc-devel] Suggestion: reference counted objects

Gennady Agranov gennadyagranov at gmail.com
Sat Sep 20 22:54:01 CEST 2014


I will address multiple previous e-mails on  this subject :)

1. FPC does perform reference counting if variable type is interface, 
but not if variable type is class that implements interface - 
legacy/compatibility reasons?

If you want to do ARC for objects - just remove this limitation and 
allow compiler to generate reference counting code not just for for 
interfaces but for classes that implement interface - AFAIK any 
interface in FPC/Delphi extends IUnknown and has reference counting methods.

2. I agree with Sven - adding reference counting to TObject is a bad idea

Please do not look at Delphi - they just follow Apple - and both 
companies do not address real issues with their development tool chains 
- it is all pure marketing.

In reality ARC and "weak" keyword do not magically solve the memory 
management issues - you either have GC or you do not have GC - there is 
no way around it.

I personally like TComponent approach - you have an object that owns 
other objects - as soon as this object dies - all children and 
grandchildren die too.

Combining it with ARC seems to me the way to go...

3. About "weak" attribute - current "strong" approach with interface 
reference has a contract - it is either nil or pointer to valid instance.
If you mark interface reference as "weak" - how do you know whether this 
not nil reference is valid or not - I can be missing something here - 
please explain.

In Java weak reference is accessed through some intermediate object and 
you can this object whether the reference is gone or is still valid - 
but you need to have GC to do it...


More information about the fpc-devel mailing list