Objective c &引用;已将无法识别的选择器发送到实例";在我的InGame课堂上

Objective c &引用;已将无法识别的选择器发送到实例";在我的InGame课堂上,objective-c,unrecognized-selector,Objective C,Unrecognized Selector,我在这里的第一个问题,也是我的第一个应用程序: 我一直收到以下信息。我正在创建一个具有不同类别的测验应用程序。每当我单击某个类别时,它都会返回以下内容: 2014-03-21 16:40:20.810 US Government and Politics Quiz[35847:60b] -[InGame Category4]: unrecognized selector sent to instance 0x10ad530d0 2014-03-21 16:40:20.812 US

我在这里的第一个问题,也是我的第一个应用程序:

我一直收到以下信息。我正在创建一个具有不同类别的测验应用程序。每当我单击某个类别时,它都会返回以下内容:

    2014-03-21 16:40:20.810 US Government and Politics Quiz[35847:60b] -[InGame Category4]: unrecognized selector sent to instance 0x10ad530d0
    2014-03-21 16:40:20.812 US Government and Politics Quiz[35847:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[InGame Category4]: unrecognized selector sent to instance 0x10ad530d0'
这是我的代码:

类别.m

 (IBAction)Button1:(id)sender{
[Category1 setTitle:@"Political Parties" forState:UIControlStateNormal];
Category1SelectedNumber = 1;
[[NSUserDefaults standardUserDefaults] setInteger:Category1SelectedNumber forKey:@"CategorySaved"];

}

-(IBAction)Button2:(id)sender{
[Category2 setTitle:@"Pressure Groups" forState:UIControlStateNormal];
Category2SelectedNumber = 2;
[[NSUserDefaults standardUserDefaults] setInteger:Category2SelectedNumber forKey:@"CategorySaved"];
}
-(void)loadCategory1{
if (@"CategorySaved" == 1){
switch (QuestionSelected) {
    case 0:
        QuestionText.text = [NSString stringWithFormat:@"What is the general Republican stance on abortion?"];
        [Answer1 setTitle:@"Pro-abortion" forState:UIControlStateNormal];
        [Answer2 setTitle:@"No stance at all" forState:UIControlStateNormal];
        [Answer3 setTitle:@"Pro-life" forState:UIControlStateNormal];
        [Answer4 setTitle:@"Mixture of both" forState:UIControlStateNormal];
        Answer3Correct = YES;
        break;

    case 1:
        QuestionText.text = [NSString stringWithFormat:@"What is the general Democrat stance on gay rights?"];
        [Answer1 setTitle:@"Marriage should be between a man and woman" forState:UIControlStateNormal];
        [Answer2 setTitle:@"Mixture of both" forState:UIControlStateNormal];
        [Answer3 setTitle:@"No stance at all" forState:UIControlStateNormal];
        [Answer4 setTitle:@"Marriage should be legal for all couples" forState:UIControlStateNormal];
        Answer4Correct = YES;
        break;
}
}}


-(void)loadCategory2{
if (@"CategorySaved" == 2) {
switch (QuestionSelected) {
    case 0:
        QuestionText.text = [NSString stringWithFormat:@"Which of these is NOT an ideological pressure group?"];
        [Answer1 setTitle:@"American Conservative Union" forState:UIControlStateNormal];
        [Answer2 setTitle:@"People for the American Way" forState:UIControlStateNormal];
        [Answer3 setTitle:@"National Farmers Union" forState:UIControlStateNormal];
        [Answer4 setTitle:@"American Civil Liberties Union (ACLU)" forState:UIControlStateNormal];
        Answer3Correct = YES;
        break;

    case 1:
        QuestionText.text = [NSString stringWithFormat:@"Which of the following is not a constitutional requirement to be President?"];
        [Answer1 setTitle:@"Be at least 35 years old" forState:UIControlStateNormal];
        [Answer2 setTitle:@"Be married to an American" forState:UIControlStateNormal];
        [Answer3 setTitle:@"Be born in the USA" forState:UIControlStateNormal];
        [Answer4 setTitle:@"Be a resident in the USA for at least 14 years" forState:UIControlStateNormal];
        Answer2Correct = YES;
        break;
}
}}
InGame.m

 (IBAction)Button1:(id)sender{
[Category1 setTitle:@"Political Parties" forState:UIControlStateNormal];
Category1SelectedNumber = 1;
[[NSUserDefaults standardUserDefaults] setInteger:Category1SelectedNumber forKey:@"CategorySaved"];

}

-(IBAction)Button2:(id)sender{
[Category2 setTitle:@"Pressure Groups" forState:UIControlStateNormal];
Category2SelectedNumber = 2;
[[NSUserDefaults standardUserDefaults] setInteger:Category2SelectedNumber forKey:@"CategorySaved"];
}
-(void)loadCategory1{
if (@"CategorySaved" == 1){
switch (QuestionSelected) {
    case 0:
        QuestionText.text = [NSString stringWithFormat:@"What is the general Republican stance on abortion?"];
        [Answer1 setTitle:@"Pro-abortion" forState:UIControlStateNormal];
        [Answer2 setTitle:@"No stance at all" forState:UIControlStateNormal];
        [Answer3 setTitle:@"Pro-life" forState:UIControlStateNormal];
        [Answer4 setTitle:@"Mixture of both" forState:UIControlStateNormal];
        Answer3Correct = YES;
        break;

    case 1:
        QuestionText.text = [NSString stringWithFormat:@"What is the general Democrat stance on gay rights?"];
        [Answer1 setTitle:@"Marriage should be between a man and woman" forState:UIControlStateNormal];
        [Answer2 setTitle:@"Mixture of both" forState:UIControlStateNormal];
        [Answer3 setTitle:@"No stance at all" forState:UIControlStateNormal];
        [Answer4 setTitle:@"Marriage should be legal for all couples" forState:UIControlStateNormal];
        Answer4Correct = YES;
        break;
}
}}


-(void)loadCategory2{
if (@"CategorySaved" == 2) {
switch (QuestionSelected) {
    case 0:
        QuestionText.text = [NSString stringWithFormat:@"Which of these is NOT an ideological pressure group?"];
        [Answer1 setTitle:@"American Conservative Union" forState:UIControlStateNormal];
        [Answer2 setTitle:@"People for the American Way" forState:UIControlStateNormal];
        [Answer3 setTitle:@"National Farmers Union" forState:UIControlStateNormal];
        [Answer4 setTitle:@"American Civil Liberties Union (ACLU)" forState:UIControlStateNormal];
        Answer3Correct = YES;
        break;

    case 1:
        QuestionText.text = [NSString stringWithFormat:@"Which of the following is not a constitutional requirement to be President?"];
        [Answer1 setTitle:@"Be at least 35 years old" forState:UIControlStateNormal];
        [Answer2 setTitle:@"Be married to an American" forState:UIControlStateNormal];
        [Answer3 setTitle:@"Be born in the USA" forState:UIControlStateNormal];
        [Answer4 setTitle:@"Be a resident in the USA for at least 14 years" forState:UIControlStateNormal];
        Answer2Correct = YES;
        break;
}
}}
希望这就是解决我的问题所需要的一切。提前感谢。

您需要共享您的“游戏中”代码,因为它试图在某个地方调用类型为
InGame
的对象上的
类别4
消息,该对象没有定义该方法。异常基本上是这样的,“嘿,这个对象(InGame)没有一个名为“Category4”的方法

您至少需要确保
InGame
类上有这样一个方法


您可能仍然存在导致此异常的其他内存问题。在这种情况下,您需要共享更多代码。

我看到
loadCategory1
loadCategory2
,但没有
Category4
选择器,这是您的
InGame
实例试图调用的;并且因为它找不到它(因此未知选择器)它将崩溃。

InGame
是否实现了实例方法
类别4
?与您的问题无关,但请完全重做此代码。将问题和答案的文本放在plist文件或数据库中。在应用程序中硬编码所有文本并使用巨型开关语句是可怕的。您应该能够在不向应用程序中添加一行代码的情况下处理任意数量的类别和问题。不要忽略编译器警告。您的代码应该编译干净。您的
if
语句将
NSString
文本与整数常量进行比较是不可能有效的。我强烈建议您停止应用程序开发,以获取更多信息请稍等片刻,找到一本关于Objective-C编程语言的好教程。现在就学习基础知识,这样可以节省大量时间。这不是一个安全的假设,因为我们看不到所有OP的代码。事实是,他的
InGame
类没有实现
类别4
选择器,否则不会发生崩溃。我不知道在哪里假设是。你假设你看到了所有的OPs代码。你还假设
loadCategoryX
Category
属性/方法有什么关系。从代码中我们可以看到那些加载方法对Category没有任何作用。你假设我们没有看到所有的OP代码,有什么区别吗?我已经陈述了一个事实对我所得到的东西感到高兴。在这种情况下,对我来说是安全的,而不是对他。在问题下添加一条评论更合理,询问这是否是完整的代码,如果不是,那么你在我的答案下的评论将是完全有意义的,我将很乐意修改它。