Bah Dave was faster :).

John,

you can see it this way: With the @optional directive you tell the compiler not 
to complain if those methods are missing in your class implementing the 
protocol, still the class which invokes those optional methods has to ensure 
that those are implemented.

Cheers,
Chris
 
On Tuesday, January 05, 2010, at 07:58PM, "Dave DeLong" <davedel...@me.com> 
wrote:
>@optional is a compile-time directive.  It means that objects that conform to 
>your protocol don't *have* to implement the method when the code is compiled.  
>However, it has nothing to do with runtime-verification.  That is up to you 
>(so yes, you should be using respondsToSelector:).
>
>If you didn't have the @optional directive, the call to respondsToSelector: 
>would be unnecessary.
>
>Dave
>
>On Jan 5, 2010, at 11:53 AM, John Michael Zorko wrote:
>
>> 
>> Hello, all ...
>> 
>> After [re-]reading the Apple documentation, i'm still not clear as to what 
>> @optional really does in a @protocol. I thought that declaring certain 
>> messages as @optional would make the app not crash if a certain message 
>> didn't have an implementation in a class that adopts the protocol, however 
>> i'm finding that this isn't the case:
>> 
>> 2010-01-05 10:40:58.698 VoxityNowPlaying[14413:207] *** Terminating app due 
>> to uncaught exception 'NSInvalidArgumentException', reason: '*** 
>> -[VoxityNowPlayingViewController playerURLFinished:]: unrecognized selector 
>> sent to instance 0x39138f0'
>> 
>> ... yet my protocol is defined thusly:
>> 
>> @protocol VoxityPlayerDelegate <NSObject>
>> 
>> @optional
>> 
>> - (void)playerURLFinished:(NSURL *)url;
>> 
>> .
>> .
>> .
>> 
>> @end
>> 
>> Do I need to wrap code that sends messages to delegates with 
>> -respondsToSelector? If so, what is the point of @optional in the protocol?
>> 
>> Regards,
>> 
>> John
>
>_______________________________________________
>
>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:
>http://lists.apple.com/mailman/options/cocoa-dev/chris.ziegler%40me.com
>
>This email sent to chris.zieg...@me.com
>
_______________________________________________

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

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

Reply via email to