Objective-C:如何查看协议?

时间:2011-07-24 21:19:31

标签: objective-c protocols

对于每个可以拥有委托的对象,都有一个相应的协议,它声明了对象可以发送它的委托的消息。委托从协议中为它感兴趣的事件实现方法。

如何查看协议以找出需要实现的功能?

3 个答案:

答案 0 :(得分:2)

您可以通过按住Command键单击Xco​​de中的协议(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>
如果没有,请阅读说明,您将找到有关该协议的更多信息。协议名称也是一般的链接。