On Aug 28, 2008, at 10:15 PM, Sherm Pendley wrote:

On Thu, Aug 28, 2008 at 9:56 AM, Roland King <[EMAIL PROTECTED]> wrote:
I tried that before, making my protocol inherit from the NSObject Protocol and it sort of worked, but not quite.

Protocols aren't inherited. You can inherit an implementation of the NSObject protocol, by writing a subclass of the NSObject class, but that's a very different animal.

let me use Apple's terminology instead of my own sloppy one, you can 'incorporate' other protocols into your own, so my first shot was

@protocol Foo <NSObject>

but that fails addObserver:... if you use (id<Foo>) as addObserver:.. isn't part of NSObject so what I wanted was

@protocol Foo <NSObject, NSKeyValueObserving>

but NSKeyValueObserving  isn't really defined so you can't do that



I don't quite understand why protocols like NSKeyValueObserving aren't formalized and in a .h file somewhere so you could just use them in the same way you can the NSObject protocol. They're documented, why not just write the .h file. There's probably a very good reason for it which has totally escaped me.

Conforming to a protocol is an all-or-nothing affair - you have to implement *all* of the protocol's methods. The informal protocols I'm aware of tend to have one or more optional methods.


You can have @optional Protocol methods (is that new, that may be new, I'm really not sure). Of course if the protocols ended up all optional then indeed that would rather defeat the purpose of the whole thing. That's a very good point though. I'm still more used to interfaces in other languages which really are all-or-nothing.

sherm--

--
Cocoa programming in Perl: http://camelbones.sourceforge.net


_______________________________________________

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 [EMAIL PROTECTED]

Reply via email to