|
From: | Devang Patel |
Subject: | Re: PATCH: Find more ObjC methods |
Date: | Fri, 3 Oct 2003 12:53:03 -0700 |
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 thiscase, 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
[Prev in Thread] | Current Thread | [Next in Thread] |