• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Category or Protocol? (objc newbie)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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

References: 
 >Category or Protocol? (objc newbie) (From: Rick Kitts <email@hidden>)

  • Prev by Date: Re: Category or Protocol? (objc newbie)
  • Next by Date: Re: [SOLVED] NSBundle won't release ? [by NOT using NSBundle]
  • Previous by thread: Re: Effective Cocoa (was Category or Protocol? (objc newbie))
  • Next by thread: RE: Category or Protocol? (sidetrack)
  • Index(es):
    • Date
    • Thread