@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>
。否则,它是前类声明所需的前向声明,
我想我明白现在发生了什么,我的困惑是,我认为'@ class'声明和两个协议声明齐头并进,彼此之间有什么关系 @'class' was只是通知编译器该名称的一个类存在,因为在协议声明中使用了一个引用。感谢您的帮助! – Fitzy 2012-04-02 04:12:48
是的,这是一个前向声明:) – Jack 2012-04-02 04:15:26