2013-05-28 72 views

回答

26

这是一个ObjC型的向前声明:

@class MyClass; 

而且这是ObjC协议的前向声明:

@protocol AVAudioSessionDelegate; 

对于那些很好奇的人,为什么这很有用:前向声明可以用来显着减少依赖关系并显着缩短构建时间,因为它允许您避免使用头部和/或整个框架(然后#import其他框架)。当不使用前向声明时,许多不必要的头文件对程序的其他部分是可见的 - 更改一个头文件可能导致许多文件被重新编译,编译和链接时间将会增加。因为ObjC类型总是作为指针处理(在我们的抽象层次上),所以在大多数情况下,前向声明就足够了。然后,您可以在您的@implementation或类延续声明你的实例变量,然后#import可以去在*.m文件。另一个原因是避免循环依赖。

+1

这实际上并没有回答我应该如何向前声明@interface对象。使用我给出的例子将会有所帮助。 – aerlfredith

+1

对不起,你的答案DID解决了我的问题我只是没有完全理解你的意思。 @interface对象也用@class MyClass预先声明;我期待更像@interface Myclass ;.对不起。谢谢 – aerlfredith

+0

@aerlfredith不客气:) – justin