[fpc-devel] Suggestion: reference counted objects

Sven Barth pascaldragon at googlemail.com
Thu Sep 25 19:36:15 CEST 2014

On 25.09.2014 17:23, Chriss Kalogeropoulos wrote:
> Hi Sven,
> Can you comment on how are you going to handle the case of
> TInterfacedObject and descendants? Are you going to use the same Addref
> & Release method ? How can you guarantee that the same counter will be
> updated in case of IUnknown implementations that introduce their own
> refcount variable (possibly with different name)?

There are two cases considering my RFC:
- an user uses TARCObject, then maybe we can provide a 
TARCInterfacedObject as well, which just implements AddRef and Release 
of IUnknown accordingly
- an user adds the refcounted modifier to an existing class type of 
which one of the parents used a reference counted interface as well; the 
best here would be to reimplement AddRef and Release to use the 
reference counting methods provided by the ARC class.

> Are you going to check that the class is already destroyed (because the
> arc has killed the instance) on IInterface.Release so that we should not
> get access violations on scenarios that mix ref counted classes and
> interfaces ?

This is not possible as in that case the reference would already be 
gone. But if you implemented the IUnknown reference counting using the 
ARC one then there shouldn't be any stray Release calls anyway, except a 
C++ (or another language that has no automatic reference counting for 
IUnknown) library has a bug regarding reference counting.


More information about the fpc-devel mailing list