Re: Category or Protocol? (objc newbie)
Re: Category or Protocol? (objc newbie)
- Subject: Re: Category or Protocol? (objc newbie)
- From: Nathan Day <email@hidden>
- Date: Tue, 19 Apr 2005 14:31:47 +1000
You need to read up on formal versus informal protocols, a catagory interface without an implementation is called an informal protocol and it simply lets you attempt to send a message to an object without getting a compiler warning, it also servers a documentation of what methods the delegate can choose to implement.
The way you use it is something like this
if( [theDelegate respondsToSelector:@selector(delegateMethod)] )
[theDelegate delegateMethod];
with out the catagory, the compile might complain that it doesn't know about the method if the user doesn't implement it. If you used a formal protocol instead then the person who write the delegate would have to implement the method 'delegateMethod', even if it doesn't do anything.
On Tuesday, April 19, 2005, at 02:13PM, Rick Kitts <email@hidden> wrote:
>Hello. I'm working on a class that uses a delegate. I was looking at
>how Apple does this sort of thing and ran into NSXMLParser. It takes a
>delegate, of course, and the delegate interface is declared as follows:
>
>// The parser's delegate is informed of events through the methods in
>the NSXMLParserDelegateEventAdditions category.
>@interface NSObject (NSXMLParserDelegateEventAdditions)
>
>To be honest, I'm not sure that this means. Does
>NSXMLParserDelegateEventAdditions
>define a type that I can subclass?
>
>Coming from Java world my inclination is to use a Protocol and do:
>
>-(void)setDelegate:(id<MyProtocol>)delegate;
>
>This never seems to be done in any of the Apple stuff so I'm guessing
>my inclination is at least idiomatically wrong but, again, I'm not sure
>why.
>
>So, I guess what I'm asking is can anyone either a) explain what this
>stuff is trying to do or b) point me to some docs or a book that can
>help me understand this sort of thing? I have read the objc manual
>(PDF) from Apples site and I didn't see this sort of thing covered.
>
>Many thanks in advance for any assistance,
>---Rick
>
> _______________________________________________
>Do not post admin requests to the list. They will be ignored.
>Cocoa-dev mailing list (email@hidden)
>Help/Unsubscribe/Update your Subscription:
>
>This email sent to email@hidden
>
>
Nathan Day
email@hidden
http://homepage.mac.com/nathan_day/
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden