12
A
回答
26
这是一个ObjC型的向前声明:
@class MyClass;
而且这是ObjC协议的前向声明:
@protocol AVAudioSessionDelegate;
对于那些很好奇的人,为什么这很有用:前向声明可以用来显着减少依赖关系并显着缩短构建时间,因为它允许您避免使用头部和/或整个框架(然后#import
其他框架)。当不使用前向声明时,许多不必要的头文件对程序的其他部分是可见的 - 更改一个头文件可能导致许多文件被重新编译,编译和链接时间将会增加。因为ObjC类型总是作为指针处理(在我们的抽象层次上),所以在大多数情况下,前向声明就足够了。然后,您可以在您的@implementation
或类延续声明你的实例变量,然后#import
可以去在*.m
文件。另一个原因是避免循环依赖。
相关问题
- 1. 向前声明
- 2. 向前声明VS#进口继承
- 3. 前向声明的类成员的前向声明
- 4. 接口声明
- 5. 声明接口
- 6. OCaml前向声明
- 7. 类向前声明
- 8. 类的前向声明
- 9. 前向声明的缺点?
- 10. 向前声明的类
- 11. 类的前向声明?
- 12. C中的前向声明?
- 13. C++中的前向声明
- 14. COM接口声明
- 15. Maxscript函数前向声明
- 16. 前向声明和包括
- 17. C++前向声明问题
- 18. 模板类向前声明
- 19. 向前声明错误
- 20. GCC向前声明和__may__alias
- 21. CADisplayLink向前声明错误
- 22. 类前向声明错误
- 23. 向前声明VS包括
- 24. C++/CLI向前声明
- 25. 无法找到BaseType的接口声明/试图使用BaseType的正向声明
- 26. 接口声明的访问说明符
- 27. 抽象接口声明
- 28. 声明实现接口
- 29. 在哪里声明接口?
- 30. 目标C接口声明
这实际上并没有回答我应该如何向前声明@interface对象。使用我给出的例子将会有所帮助。 – aerlfredith
对不起,你的答案DID解决了我的问题我只是没有完全理解你的意思。 @interface对象也用@class MyClass预先声明;我期待更像@interface Myclass ;.对不起。谢谢 – aerlfredith
@aerlfredith不客气:) – justin