Iphone 目标-C:“游戏玩家”可能对“-addChild:z”没有反应
一般来说,我对Objective-C和iPhone开发还不熟悉。我正在使用Cocos2d iphone库作为游戏引擎,试图开发一个非常简单的游戏 我一直在遵循一些教程来掌握窍门,并试图建立一个非常简单的关卡,在这个关卡中,一些球使用花栗鼠物理引擎在屏幕上反弹。下面是导致问题的文件的定义和实现。编译期间生成的警告是: 游戏场景.m:69:警告:“游戏玩家”可能不会响应“-addChild:z:” GDB还提供以下内容: 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“***-[GameLayer addChild:z::]:发送到实例0xf6ff90的选择器无法识别”Iphone 目标-C:“游戏玩家”可能对“-addChild:z”没有反应,iphone,objective-c,cocos2d-iphone,Iphone,Objective C,Cocos2d Iphone,一般来说,我对Objective-C和iPhone开发还不熟悉。我正在使用Cocos2d iphone库作为游戏引擎,试图开发一个非常简单的游戏 我一直在遵循一些教程来掌握窍门,并试图建立一个非常简单的关卡,在这个关卡中,一些球使用花栗鼠物理引擎在屏幕上反弹。下面是导致问题的文件的定义和实现。编译期间生成的警告是: 游戏场景.m:69:警告:“游戏玩家”可能不会响应“-addChild:z:” GDB还提供以下内容: 由于未捕获的异常“NSInvalidArgumentException”而终止
如果我注释掉这一行,当调用GameLayer时,程序将不再崩溃。用注释有问题的行编译时警告是因为@interface部分没有任何名为-addChild:z:
运行时错误是因为@implementation部分没有-addChild:z:。我在Cocos2D 0.8中遇到了这个问题,并开发了一个解决方法,在layer类中声明一个数组,该数组将包含要跟踪的子对象
@interface GameLayer : Layer
{
cpSpace *space;
NSMutableArray* children;
}
然后,您可以使用添加子项
[[self children] addObject:myObject];
可以很容易地将该数组的内容操纵到您可能想要执行的任何操作。检查CoCoS2D2D 0.8.1,上述代码应该可以工作。@interface不需要声明addChild:z:,因为GameLayer继承Layer,Layer继承CocosNode,CocosNode实现并声明addChild:z:
@interface GameLayer : Layer
{
cpSpace *space;
NSMutableArray* children;
}
[[self children] addObject:myObject];