对于每个可以拥有委托的对象,都有一个相应的协议,它声明了对象可以发送它的委托的消息。委托从协议中为它感兴趣的事件实现方法。
如何查看协议以找出需要实现的功能?
答案 0 :(得分:2)
您可以通过按住Command键单击Xcode中的协议(Xcode 3中的Command-doubleclick)查看文档或查看相应的头文件。
答案 1 :(得分:2)
Objective-C中的协议不是必需的,但它们很有用;协议通常在头文件(.h)中声明:
@protocol MyAwesomeProtocol
-(void)thisMethodIsRequired;
@optional
-(void)theseMethodsAreOptional;
@end
......并且通常在几个地方使用:
1:在实例变量声明中:
@class Foo : Bar
{
id<MyAwesomeProtocol> someIvar;
}
@end
2:在财产声明中:
@class Foo : Bar
{ }
@property (assign) id<MyAwesomeProtocol> someProperty;
@end
3:在代码中(尽量避免这种情况,但这是合法的):
if(...)
{
[(id<MyAwesomeProtocol>)obj foo];
}
如果您正在使用Xcode,您始终可以命令 - 单击代码中任何位置出现的协议,以跳转到定义该协议的标头。即使是Apple的协议也是如此,因为头文件没有编译。此外,通过Xcode提供的文档提供了有关所需方法或可选方法的更多信息。
由于您可以定义可选的协议方法,因此您应该始终检查您的委托--respondsToSelector:@selector(isThisMethodImplemented :),因为该语言不会为您执行此操作。
此外,如果您正在使用Xcode,您可以选择单击代码中的类来打开快速文档面板,该面板可以选择转到您单击的对象类的完整文档。
答案 2 :(得分:0)
查看文档delegate
属性,几乎所有时间定义为id
类型以及它符合的协议:id <TheProtocolYouLookFor>
。
如果没有,请阅读说明,您将找到有关该协议的更多信息。协议名称也是一般的链接。