On Jan 14, 2009, at 2:18 PM, Mohan Parthasarathy wrote:
I have protocol X that is implemented by a few classes of my own. These classes are not known directly to my main code but only through the protocol (id<protocol>). When my main code tries to addObserver:self to the object id<protocol>, i get a warning saying that my protocol does not implement it. This would have worked if i used the real object behind. What should i do ? Just add a method like addObserver in the protocol and in the real object make the method just invoke the [super addobserver]. Or is there a better
way to solve it ?

Some options:

1. Use `NSObject<MyProtocol>*` instead of `id<MyProtocol>`. Then any method from class NSObject is allowed along with the protocol's own methods. Since addObserver: is declared as a class on NSObject, this should pacify the compiler.

2. Add -addObserver: to the protocol.

3. Create another protocol that includes -addObserver:. Then either use `id<MyProtocol,MyObserverProtocol>`, or make MyProtocol itself adopt MyObserverProtocol.

#1 is probably the best, assuming all of your objects are in fact NSObjects.


--
Greg Parker     gpar...@apple.com     Runtime Wrangler


_______________________________________________

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