2012-04-13 123 views
2

是有可能实现的协议链接?协议链接

例如,我定义一个新的协议(ProtocolA),我想,以确保它只能适用于符合ProtocolB对象。因此,像...

@protocol ProtocolA <NSObject<ProtocolB>> 
@end 

问题

是否目标C允许这种行为?如果不是,那么我应该注意一种设计模式来获得类似的效果?

回答

4

代替使用内切协议(这是不正确的格式)的,简单地用逗号每个单独的协议分开像这样:

@protocol ProtocolA <NSObject, ProtocolB> 
@end 

这是完全合法的。实际上,这几行声明了几百个UIKit协议。

+0

感谢您的答复。我实际上昨晚试了这个,但我遇到了一些构建错误(22确切地说是:P)。 不过,我觉得有些奇怪,你将能够使用您所提供的语法(即NSObject的是一个实际的类,而ProtocolB是用户定义的协议)。 我会尽力在今天晚些时候再次拍摄这种方法。 – dpalmajr 2012-04-13 13:18:41

+0

这是一个鲜为人知的事实,NSObject也是一个协议!你认为你可以打电话+ alloc? – CodaFi 2012-04-13 15:56:06

+0

你的权利。不知道我是如何错过的。感谢您的帮助,您的答案取得了诀窍。 – dpalmajr 2012-04-14 02:16:52