接收器类型错误Obj-C

时间:2016-05-28 14:47:14

标签: objective-c xcode

我试图制作一个Hangman游戏。我意识到我的方法可能不是最有效的。基本上,每次输入一个字母,我都会检查是否有空格,以便我可以显示"你赢了!"图片。我一直有两个错误:

  

收件人类型' char'不是' id'或者接口指针,考虑一下   将它投射到' id'

     

线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x63)

非常感谢任何帮助。

        BOOL dash = YES;

        for(int j = 0; j < self.correctWord.length; j++){

            char temp = [self.correctWord characterAtIndex:j];

            if([temp isEqual:@"-"])
                dash = YES;

        }

        if(dash == YES)
            self.hangmanImage.image = [UIImage imageNamed:@"wonimg"];

1 个答案:

答案 0 :(得分:2)

Objective-C的事情是它是一个双头野兽。

  1. 您可以向其发送消息。
  2. 那里是普通的C.这里没有消息,只是操作员和函数调用。
  3. 让我们检查错误:

      

    收件人类型&#39; char&#39;不是&#39; id&#39;或界面指针,考虑将其强制转换为&#39; id&#39;

    A&#34;接收器&#34;是什么收到消息。做一个不再准确的概括,消息就是方括号:

    [receiver message]
    

    [receiver messageArgument1:arg1 argument2:arg2]
    

    id类型是Objective-C&#34;任何对象&#34;的概念。

    所以错误是试图说接收器是char,它不是一个对象。它是普通的C型。这就是问题所在:&/ p>

    if([temp isEqual:@"-"])
    

    对于普通C类型,与==运算符测试相等:

    if (temp == '-')