我正在使用 cocos2d 框架开发 iPhone 游戏,最近遇到了一个我似乎无法解决的问题。在我的项目中添加了一个新类并在其中做了一些工作之后,我尝试编译我的代码,而我什至没有接触过的几个类都坏了。似乎这些类只是忘记了如何导入外部类。我在我的几个课程中都遇到了错误,但这里有一个例子:
#import "cocos2d.h"
#import "XZombie.h"
#import "WayPoint.h"
#import "XBuilding.h"
//@class XBuilding;
@interface Hoarde : CCNode
{
float _spawnRate;
int _totalXombies;
NSMutableArray *_path;
XBuilding *_target;
NSMutableArray *_zombies;
bool _zombiesReset;
}
@property (nonatomic) float spawnRate;
@property (nonatomic) int totalXombies;
@property (nonatomic, retain) NSMutableArray *path;
@property (nonatomic, retain) XBuilding *target;
@property (nonatomic, retain) NSMutableArray *zombies;
@property (nonatomic, assign) bool zombiesReset;
- (id) initWithZombieCount:(int)totalXombies Target:(XBuilding *) target SpawnRate:(float)spawnrate;
- (void) resetZombies;
@end
我在“XBuilding *_target;
如果我取消注释”的行上得到错误@class XBuilding;
,错误就会消失,所以虽然这并不能真正解决我的问题,但它给了我一个解决它的工具。
如果我@class
对所有我遇到问题的文件都做了这个技巧,我可以解决这个问题。问题是,除了说明符限定符列表错误之外,我还遇到了一个新的但类似的错误。一些代码行给了我Expected a ')' before *token
或Expected a ';' before *token
. 这些行通常也会给我前面的错误,所以@class 技巧也很有效,但我一点也不知道为什么这些东西正在做它正在做的事情。我在某处(我认为是 cocos2d 论坛)读到将 .m 文件重命名为 .mm 可能会奏效,但对我来说不是。
所以,虽然我可以继续我的项目,但我真的很想知道将来如何避免类似的事情发生……