[cfe-dev] Missing dealloc analysis
Jean-Daniel Dupas
devlists at shadowlab.org
Thu Jul 3 00:55:22 PDT 2008
Le 3 juil. 08 à 07:35, Nikita Zhuk a écrit :
> I noticed the addition of missing dealloc analysis in r53075. It's a
> good idea to check that dealloc is implemented and that it always
> calls [super dealloc], but there're couple of points I would like to
> mention:
>
> 1. It should be disabled in GC environment, because dealloc methods
> are not called under GC
>
> 2. In non-GC environment, the primary function of dealloc method is to
> update retain counts of variables the object being dealloced is
> pointing to. So that usually means that dealloc must be implemented
> when an object has some ivars. Dealloc is not always required, and
> there're lot of classes which don't need it (e.g. singleton classes).
> Currently missing dealloc analysis requires every class to implement
> dealloc and it's causing a lot of false positives.
>
> I'm not completely sure if absence of ivars should be the only factor
> which disables missing dealloc analysis, but at least in my case it
> would suppress a lot of false positives.
dealloc is also used to nullify the pointer in some other class that
have a weak reference on the disposed instance.
You can have an object without ivar that is declare delegate of an
other object and should call -[setDelegate:nil] on dealloc.
You have the same issue with notification listeners, that have to
unregister when they are disposed.
And so, defining if dealloc should be implemented or not is not an
easy task.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2427 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20080703/cc1546ad/attachment.bin>
More information about the cfe-dev
mailing list