我正在使用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/