This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: ObjC PR/6328
- From: Nicola Pero <nicola at brainstorm dot co dot uk>
- To: Cédric Marcone <marcone at mdeo dot fr>
- Cc: Didier Pralon <didier dot pralon at mdeo dot fr>, gcc-gnats at gcc dot gnu dot org, gcc-prs at gcc dot gnu dot org, gcc-bugs at gcc dot gnu dot org
- Date: Wed, 3 Jul 2002 16:10:02 +0100 (BST)
- Subject: Re: ObjC PR/6328
> Hi Nicola,
>
> in fact my bug report was bugged !!
>
> The real problem is described below, and the test case is attached.
>
> When classes are defined in an external static library, you must
> explicitly ask the Objc-Runtime to reference them or it is not aware of
> their existence.
>
> To do so, we are calling +initialize manually on those classes. In this
> specific case, the Objc-Runtime does not prevent further calls and will
> issue a second +initialize when trying to instanciate those classes.
Thanks - very interesting indeed (the testcase was great :-) ).
My suggestion is simply to use
[B class];
instead of
[B initialize];
to have B referenced by the ObjC runtime ... that will cause the runtime
to automatically drag in B, and also call +initialize (should be
guaranteed once) and everything will work happily.
I think this is the proper way of dragging in classes, and when I changed
the testcase to do it, the runtime seemed to behave very properly.
Let me know if you are happy with this solution, or if I have missed
something.