On Fri, 4 Oct 2013 09:59:53 -0700, Matt Neuburg said:

>-(BOOL)test {
>    return [self.celldelegate respond
>sToSelector:@selector(foo:)]; // ...wait for it...
>}
>
>Compile error! No known instance method for selector
>'respondsToSelector:'. WTF???
>
>Here are two ways of fixing the problem. (1) Cast to id:
>
>-(BOOL)test {
>    return [(id)self.celldelegate respondsToSelector:@selector(foo:)];
>}
>
>Or, (2) inherit NSObject protocol back in the protocol definition:
>
>@protocol MyCellDelegate<NSObject>
>@end

That's the correct solution.

>But why is either of those necessary? Surely an id<MyCellDelegate> is,
>by definition, an id - which inherits from NSObject,

You've got that backwards.  NSObject 'inherits' from id.

respondsToSelector: is part of the NSObject (and NSProxy) protocol.  Objects 
that aren't subclasses of NSObject might not respond to it.

Cheers,

-- 
____________________________________________________________
Sean McBride, B. Eng                 s...@rogue-research.com
Rogue Research                        www.rogue-research.com 
Mac Software Developer              Montréal, Québec, Canada



_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to