Re: NEWBIE: Why use protocols?
Re: NEWBIE: Why use protocols?
- Subject: Re: NEWBIE: Why use protocols?
- From: Bob Ippolito <email@hidden>
- Date: Wed, 18 May 2005 16:06:23 -0400
On May 18, 2005, at 3:59 PM, Ondra Cada wrote:
On 18.5.2005, at 21:50, Bob Ippolito wrote:
It is never *needed* to use protocols in the same way as you
could define every pointer in C as a void*, it's merely another
convenience of the language that assists you the programmer in
getting your job right. If an object is supposed to subscribe
to a protocol, then the type checker can check that you haven't
bungled your code for you :)
Ammm... there's a bit more than this. Namely, a formal protocol
(unlike an informal one!) is a runtime object, which (among
other) can be enquired for signatures of its messages.
Agreeably that is in fact needed *quite* seldom, but sometimes it
just might (like with the DO I've mentioned before).
You can ask ANY object that conforms to NSObject what the
signatures of its messages are!
+[NSObject instanceMethodSignatureForSelector:]
-[NSObject methodSignatureForSelector:]
Does not help if the object happens to be at the other side of DO
and the network round-trip is costly. That's what protocols are
used for in DO, to remove the need for costly round-trips.
There are plenty of other ways it could be done, efficiently even.
Does not help either if there's no class (and thus also no
instance) implementing an appropriate method -- that's the case of
my dynamic frameworks. They implement methods through -
formwardInvocation:, but first they need to provide an appropriate
method signature, and that's the problem.
If they implemented these methods as well as the forwardInvocation:,
then it could still be done.
Anyway, DO is one of the special cases I mentioned where it still
makes sense to use protocols, because the implementation basically
requires them.
-bob
_______________________________________________
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