Hi again, How would you handle the case of a user adding an interface on a class marked as reference counted (like a tstringlist descendant, TArcStringList) and then inherits from that and implements the IUnknown TFooStringlist =class (TArcStringlist, IInterface).
Will he be able to hook on the addref and release methods of the arc object ? Or at the least use the refcount variable? Will it be done automatically by the compiler (by using the same method names maybe) ? Thanks, Chriss Στις 25 Σεπ 2014 6:36 μ.μ., ο χρήστης "Sven Barth" < pascaldra...@googlemail.com> έγραψε: > 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 >
_______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel