1
A
回答
4
@class
用于declare一类。基本上告诉编译器:“嘿,在源代码中有一个类名为的地方,其中。定义会晚一些,但现在让我使用它的名称作为指针类型。”
参见:
developer.apple.com
SO: Class vs Import
MacRumors
注:由于Richard J. Ross III指出的,@class
关键字允许循环引用(当两个类都依赖于每-)而不破坏构建。
4
// header.h
#import <Foundation/Foundation.h>
@class reference;
@interface class
...
@end
// implementation.m
#import "header.h"
#import "reference.h"
@implementation class
...
@end
你用这个当您有多个文件之间循环引用的类,并且您导入包含由@class
指令所描述的类的头,你可以安全地引用类的循环。
2
@class
通常在.h文件中用作前向声明。它所做的是说一个名为ClassName的类实际上存在,而不必导入和读取ClassName.h文件,因为它很可能会被.m文件导入
相关问题
- 1. 可以知道
- 2. 命题逻辑,不知道我是否可以在这里问这个问题
- 3. 看看这个代码,让我知道如果有什么我可以改变
- 4. 我想知道如何可以输出上的SQL这些值
- 5. 我不知道这个声明
- 6. 我可以知道什么叫applicationShouldHandleReopen?
- 7. 从轨道观察者的这段代码中我们可以知道什么?
- 8. ,我可以知道我将使用哪个端口号吗?
- 9. 有谁知道我在哪里可以找到这个HTML代码?
- 10. 有谁知道我可以在哪里定义这个URI参数?
- 11. 我想知道这个查询方法是否可行?
- 12. 为什么我得到FileNotFoundException?我可以看到这个位置的文件,所以我知道它存在
- 13. 所以,我认为这是基本的,但我需要知道
- 14. 我可以知道一个JavaScript文件是否已被执行?
- 15. 如何解决这个错误?我不能运行它,所以我不知道?
- 16. 我可以将这个轨道计算推入数据库吗?
- 17. 我有这个代码,但我不知道为什么它不会工作有人可以告诉我吗?
- 18. 是否可以自动序列化知道.class文件的对象
- 19. 谁知道使用ionic2 keyboard class?
- 20. 有人可以测试这种字体,让我知道正确的CSS代码?
- 21. 有人可以让我知道这段代码有什么问题吗?
- 22. 我想知道为什么我不能使用这个功能?
- 23. setOnDismissListener可我知道我点击的Android
- 24. 为什么这个$类可以工作,$ this-> class不是?
- 25. AngularJs与我不知道这是可能的条件条件
- 26. Servlet不可用(我知道这很常见)
- 27. 我想知道这是否可能在python
- 28. 滚动屏幕线条,我知道,这是不可能的
- 29. 我如何知道这个页面打哪个控制器?
- 30. 我可以在Class之外typedef吗?
+1关于循环引用的一个好处。这真正说明了'@ class'和'#import' – 2010-09-06 17:48:21
+1之间的区别,因为同样的原因,修正了你的语法错误。 – jer 2010-09-06 18:00:13
这不是他在说的。考虑你定义两个类别A和B,每个类别都有一个ivar。由于循环性质,您必须声明一个为'id'或使用前向声明,gcc在这种情况下仅表现得很愚蠢。此外,如果您不需要访问其成员,我通常不推荐#import'ng文件,因为没有必要使用“@ class”。 – jer 2010-09-06 18:15:24