我正在使用Cocos2d 2.x和iOS 5.0。

谁能与我分享有关“ @class Component”标签用法的很好的教程或解释?

是否有任何设计/样式引用它,或者它是否针对代码做了更特定的事情?

我在google search上找不到很多东西。

最佳答案

它的工作方式是通常如果您在接口中引用一个类,则必须#import该类的头文件:

#import "OtherClass.h"

@interface MyClass : NSObject
{
   OtherClass* someOtherClass;
}
@end


@class语句使您可以跳过导入标头:

@class OtherClass;

@interface MyClass : NSObject
{
   OtherClass* someOtherClass;
}
@end


如果使用@class,则仍必须在实现文件中#import“ OtherClass.h”。

// Still need to import, but now any class importing MyClass.h
// does not automatically know about OtherClass as well.

#import "OtherClass.h"

@implementation MyClass
…
@end


当您在第三类的其他位置#import“ MyClass.h”时,如果您使用@class OtherClass,则该第三类不会自动包含OtherClass类的头。在MyClass标头中。因此,除非明确地导入OtherClass.h标头,否则第三类不了解OtherClass。这在编写应向开发人员隐藏其实现详细信息(即OtherClass)的公共API时很有帮助。

正向声明被认为是一种良好的做法(如果仅因为它除了工作流程稍有改变之外没有其他缺点),并且比在另一个头文件中导入类的头更可取。正如菲利普(Phillip)所说,这无疑有助于防止周期性进口。

我不了解Xcode,但在Visual Studio(C ++)中,类转发还有助于加快具有数百个类的大型项目中的编译速度。那是因为VS C ++编译器花了很多时间来解决标头依赖性

关于ios - Cocos2D/iOS:使用“@class Component”标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14172581/

10-09 00:38