2010-09-06 49 views
1

的正确使用任何人都可以使用@class指出文档或详细讨论。 我一直在使用这个,但还没有真正完全理解它。 我想了解更多,并充分理解它。@class我可以知道这个

预先感谢您。

回答

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指令所描述的类的头,你可以安全地引用类的循环。

+1

+1关于循环引用的一个好处。这真正说明了'@ class'和'#import' – 2010-09-06 17:48:21

+0

+1之间的区别,因为同样的原因,修正了你的语法错误。 – jer 2010-09-06 18:00:13

+0

这不是他在说的。考虑你定义两个类别A和B,每个类别都有一个ivar。由于循环性质,您必须声明一个为'id'或使用前向声明,gcc在这种情况下仅表现得很愚蠢。此外,如果您不需要访问其成员,我通常不推荐#import'ng文件,因为没有必要使用“@ class”。 – jer 2010-09-06 18:15:24

2

@class通常在.h文件中用作前向声明。它所做的是说一个名为ClassName的类实际上存在,而不必导入和读取ClassName.h文件,因为它很可能会被.m文件导入

相关问题