'接收者types“CCParticleBatchNode”用于类消息是一个前向声明'

标题说明了一切。 我通过从github下载文件来安装cocos2d 1.1,删除我的项目中的cocos2d项目并重新添加它。

我的头文件中有'@class CCParticleBatchNode',前缀和相关的实现文件中都有#import“cocos2d.h”。 当我浏览到CCParticleBatchNode应该在的位置时,它就在那里。

那么,有人知道问题可能是什么吗? 🙂

编辑:这是一些代码。

#import "PrecipicationLayer.h" #import "cocos2d.h" @implementation PrecipicationLayer @synthesize cloudLayer; - (id)init { self = [super init]; if (self) { rain = [CCParticleRain node]; rainBatch = [CCParticleBatchNode particleBatchNodeWithFile:@"Raindrop48px.png" capacity:400 useQuad:YES additiveBlending:NO]; [self addChild:rainBatch]; [self schedule:@selector(tick:)]; } return self; } 

和头文件:

 #import <Foundation/Foundation.h> #import "cocos2d.h" @class CCParticleBatchNode; @interface PrecipicationLayer : CCLayer { CCParticleBatchNode *rainBatch; } @end 

所有不相关的部分已被删除。

呃…通常的cocos2d升级麻烦。

就我个人而言,我会简单地安装cocos2d 1.1模板(假设它们是最新的),并根据其中一个cocos2d模板创build一个项目。 然后将您的源代码和资源添加到这个新创build的项目。 这通常比尝试replace和更新现有项目中的cocos2d代码要好得多。

我想你的问题可能来自删除cocos2d项目,而不是从硬盘上的文件。 这意味着仍然会有一些旧版本的遗留文件,这些文件仍然包含在项目中并构build。 在移动新的cocos2d文件之前,您一定要删除所有现有的cocos2d文件。

最后,不要排除你从github下载的版本被破坏的可能性。 这不会是第一次。 请尝试使用网站上的可下载版本,并记住1.1在这个时候只是一个testing版。

提示:将来你可能想用Kobold2D创buildcocos2d项目,它有一个升级工具 ,可以消除所有这些麻烦。

如果您已经将它导入到.h文件中,则不需要在.m文件中导入cocos2d.h。 不过,我认为这不是问题。

有两种可能性:

  • CCParticleBatchNode在cocos2d.h中定义,在这种情况下,您不需要前向声明,这可能会让编译器感到困惑。
  • CCParticleBatchNode 没有在cocos2d.h中定义,在这种情况下,您需要在实现文件中导入CCParticleBatchNode.h,因为您拥有的只是前向声明。

“删除我的项目中的cocos2d项目,并重新添加它。”

检查文件是构build过程的一部分。 在XCode 4中,单击Project Navigator顶部的项目名称,select“Build Phases”,确保在目标名称下面显示“cocos2d libraries”。 如果是,则展开“目标依赖关系”,并确保它也在那里列出。 然后展开“链接库与二进制文件”,并确保它也被添加到那里。

下载最新的模板时遇到同样的问题。 问题是,即使文件CCParticleBatchNode.h和CCParticleBatchNode.m物理存在,他们还没有被添加到Xcode项目模板。 我只需要将它们添加到项目中,然后编译。