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.

Regards,
Sven
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to