Memory management cocos2d ccmenuitem可以';t访问变量,以SIGABRT结尾
我有下面的代码。问题是,每次我点击“SPIN”项时,程序就会崩溃,出现“程序接收信号:SIGABRT” 以下是控制台中的输出:Memory management cocos2d ccmenuitem可以';t访问变量,以SIGABRT结尾,memory-management,cocos2d-iphone,Memory Management,Cocos2d Iphone,我有下面的代码。问题是,每次我点击“SPIN”项时,程序就会崩溃,出现“程序接收信号:SIGABRT” 以下是控制台中的输出: 2011-07-29 13:52:52.906 HelloWorld[1031:207]-[NSCFString shuffle]:发送到实例0x6833c90的无法识别的选择器 2011-07-29 13:52:52.976 HelloWorld[1031:207]***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-
2011-07-29 13:52:52.906 HelloWorld[1031:207]-[NSCFString shuffle]:发送到实例0x6833c90的无法识别的选择器
2011-07-29 13:52:52.976 HelloWorld[1031:207]***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[NSCFString shuffle]:未识别的选择器发送到实例0x6833c90'
我不知道怎么了,亲爱的
这是我的密码
`#import <Foundation/Foundation.h>
#import "cocos2d.h"
@interface GameScene : CCLayer {
NSMutableArray * answersArray; //holds all valid answers
NSMutableArray * lettersArray; //holds placement of letters to display
NSMutableArray * userAnswerArray; //holds user's answer to check and submit
NSString * THEWORD; //the word
}
+(id) scene;
....
- (void) spinWord;
- (void) playWord;
@end`
导入
#导入“cocos2d.h”
@界面游戏场景:CCLayer{
NSMutableArray*answersArray;//保存所有有效答案
NSMutableArray*lettersArray;//保存要显示的字母的位置
NSMutableArray*userAnswerArray;//保存用户的答案以供检查和提交
NSString*单词;//单词
}
+(id)现场;
....
-(空)自旋词;
-(空白)口号;
@结束`
这一实施:
`
@实现游戏场景
+(id)场景{…}
-(id)init
{
if((self=[super init])){
…//一切都已初始化
[自初始化图像]
...
}
}
-(void)初始化图像
{
....
CmenuItem*menuItem1=[CmenuItemImage itemFromNormalImage:@“PLAYunselected.png”selectedImage:@“PLAYselected.png”目标:无选择器:@选择器(onPlayWord)];
CmenuItem*menuItem2=[CmenuItemImage itemFromNormalImage:@“SPINunselected.png”selectedImage:@“SPINselected.png”目标:自选择器:@selector(spinWord)];
CCMenu*菜单=[CCMenu菜单项:菜单项1,菜单项2,无];
[菜单横向对齐项];
menu.position=ccp(72198);
[自添加子菜单z:2];
}
-(空)自旋词{
//NSLog(@“%@”,lettersArray)我注意到menuItem1上有target:nil而不是target:self。错误发生在menuItem2上,所以我不确定这是否相关。前几天我遇到了一个非常类似的错误,结果是错误的目标。代码中的所有其他内容乍一看都没问题。这个错误总是准确地表示它所读取的内容类似它的意思。您向一个不理解该消息的对象发送了一条消息(意味着该对象没有处理此类请求的方法)。但这也可能意味着您向一个不存在的对象发送了一条消息
如果尝试访问错误的数组索引(或实际不存在的数组索引),则访问错误。如果尝试访问不存在的方法或不存在的对象的方法,则会收到无法识别的选择器消息
我没有看到您分配或初始化数组。我不知道什么是shuffle,您没有发布它的代码。据我所知,它可能是一个内置方法。我相当确定,您所需要做的就是分配和初始化数组
NSMutableArray * answersArray = [[NSMutableArray alloc] init];
// And so on with your other arrays.
可能是您的信件中没有任何内容。是的,我将menu1的目标更改为self,这仍然会使它出错。在这种情况下,我会仔细查看您的信件。它是如何创建的(alloc/init),以及何时发布?EXC_BAD_访问通常发生在您尝试访问已发布或一开始不存在的数据时。
NSMutableArray * answersArray = [[NSMutableArray alloc] init];
// And so on with your other arrays.