@class与下面的协议声明?

问题描述:

我目前正在从一本书学习objective-c。在一个示例中,在特定头文件的类接口之前,它读取@class,后跟两个协议声明。@class与下面的协议声明?

@class Thing; 

@protocol Foo 
-(void)foo:(Thing *); 
@end; 

@protocol Bar 
-(void)bar:(Thing *); 
@end; 

@interface Thing : NSObject <Foo, Bar> 
... 

我的理解是@class用于防止循环引用,但我不明白低于到底是怎么回事。为什么要在那里声明协议,而不是在@interface区块中?

它们是正常声明还是前向声明?

在前一种情况下,它只是一个自定义协议的声明,可能由以下定义的类使用(例如,@interface MyClass : Object<MyProtocol>。否则,它是前类声明所需的前向声明,

+0

我想我明白现在发生了什么,我的困惑是,我认为'@ class'声明和两个协议声明齐头并进,彼此之间有什么关系 @'class' was只是通知编译器该名称的一个类存在,因为在协议声明中使用了一个引用。感谢您的帮助! – Fitzy 2012-04-02 04:12:48

+0

是的,这是一个前向声明:) – Jack 2012-04-02 04:15:26