对于项目中的每个视图控制器,我的AppDelegate.h文件中是否需要“@class”声明?

时间:2010-02-13 01:35:37

标签: iphone cocoa-touch sdk delegates

请解释你的答案,因为我已经离开了目前为止没有这么做。

由于

3 个答案:

答案 0 :(得分:3)

@class与C ++中的类前向声明​​相同。

你可以简单地#import每个视图控制器的头文件,但有时候在.h文件中做前向声明(@class)更简洁,只在你的AppDelegate的.m文件中执行#import。

答案 1 :(得分:2)

你只导入你需要的东西,而@class正在做类似于#import的东西 - 它让编译器知道一个类型存在。那你为什么要告诉应用代表一个它永远不会看到的课程呢?

区别在于:

@class只会说该课程存在,仅此而已。

#import告诉代码该类接受哪些消息或头文件声明的其他内容。因此,当代码需要实际向对象发送消息时,请使用它。

这就是为什么一个非常通用的模式是在头文件中使用@class,在实现文件中使用#import。有时您需要在标题中导入,如果您必须知道“此类存在”以外的任何内容。

答案 2 :(得分:0)

简答:不。请参阅此问题:@class vs. #import