Memory management cocos2d ccmenuitem可以';t访问变量,以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”而终止应用程序,原因:'-

我有下面的代码。问题是,每次我点击“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”而终止应用程序,原因:'-[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.