This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: Find more ObjC methods



On Oct 3, 2003, at 12:14 PM, Ziemowit Laski wrote:



On Friday, Oct 3, 2003, at 12:00 US/Pacific, Devang Patel wrote:



On Oct 3, 2003, at 2:57 AM, David Ayers wrote:


[self somePrivatMethod]; /* <- should not see the prototype and warn! */

Does this mean that using private methods, that are not included in @interface, is not a good idea? I think, compiler should figure out that it is part @implementation and not warn about it.

Well, Objective-C plays it fast and loose here (as in many other places). :-) On the one hand,
you're definitely encouraged to provide an @interface for your class in a header that other
translation units can pull in. But on the other, you do not _need_ to provide an @interface at
all! It may not be very polite, but if the @implementation contains the required ivars,
the compiler knows what to do.

Yes, I understand this well.


Furthermore, methods in Objective-C are not 'private' (or 'protected') in the C++ sense;
all methods _are_ visible to the runtime. So, in the example above, the program definitely
_will_ call 'somePrivateMethod'. Also, since we happened to see the @implementation in this
case, we can actually determine which 'somePrivateMethod' this will be.

That's why compiler should not issue warning in this case. If it issues warning
than as an end user I take it it as "I'm doing something that is not OK/preferred
and compiler is warning me about it". Which not the case here so compiler should
not issue warning (and I guess you agree with me).


--
Devang


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]