调用void函数

时间:2010-10-19 16:32:44

标签: iphone objective-c xcode

在我的应用程序中我有这个方法

 -(void) Setinput:(int)input {
//value declared in .h
      value = input;

 switch(value){
 case(0)

    [b_do setTitle:@"Do" forState:(UIControlState )UIControlStateNormal];
    [b_re setTitle:@"Re" forState:(UIControlState )UIControlStateNormal];
    [b_me setTitle:@"Me" forState:(UIControlState )UIControlStateNormal];
    [b_fa setTitle:@"Fa" forState:(UIControlState )UIControlStateNormal];
    [b_sol setTitle:@"Sol" forState:(UIControlState )UIControlStateNormal];
    [b_la setTitle:@"La" forState:(UIControlState )UIControlStateNormal];
    [b_ci setTitle:@"Ci" forState:(UIControlState )UIControlStateNormal];
    [b_doo setTitle:@"Doo" forState:(UIControlState )UIControlStateNormal];
break;
case 1
    [b_do setTitle:@"Doo" forState:(UIControlState )UIControlStateNormal];
    [b_re setTitle:@"Ree" forState:(UIControlState )UIControlStateNormal];
    [b_me setTitle:@"Mee" forState:(UIControlState )UIControlStateNormal];
    [b_fa setTitle:@"Faa" forState:(UIControlState )UIControlStateNormal];
    [b_sol setTitle:@"Soll" forState:(UIControlState )UIControlStateNormal];
    [b_la setTitle:@"Laa" forState:(UIControlState )UIControlStateNormal];
    [b_ci setTitle:@"Cii" forState:(UIControlState )UIControlStateNormal];
    [b_doo setTitle:@"Dooo" forState:(UIControlState )UIControlStateNormal];
break;
    case 2;
    //code
    break;

   default
   ...
   break;




   }
}
在mainviewcontroller中,当我编写这段代码时,为什么没有发生什么?

MainViewController xxx = [[MainViewController alloc] init];
[xxx Setinput:0]

1 个答案:

答案 0 :(得分:1)

很明显,此代码未在此处复制/粘贴,因为value = input行缺少分号,而且永远不会编译。假设在编写SO问题时语法问题只是一个错误问题,代码看起来还不错。这意味着其他一些假设正在破裂。基于此代码段的最可能的错误假设是:

  1. 连接到UIButtons的变量
  2. 变量是UIButtons。
  3. 正在调用Setinput:方法。
  4. 我怀疑按钮没有连接到那些变量,但是从这段代码片段中无法分辨出来。我很好奇为什么有(UIControlState)的演员。如果你在没有它的情况下编译会发生什么?

    以下是您可以做的事情:点击value = input;行旁边的行号在那里设置断点,然后“Build& Debug”。当程序到达断点时,逐步执行代码,注意变量视图中变量的值。你可能需要打开“自我”才能看到它们。我怀疑第一个假设是假的b_do而朋友将是0x00

    如果没有,它还可以帮助在变量视图中显示Type列(运行 - >变量视图 - >显示类型列),这样您就可以确保按钮是UIButton个对象,如您所料。这验证了第二个假设是真的。

    如果应用程序永远不会到达该断点,那么第三个假设已经失败,问题不在于此代码中,而是在其他地方。

    除了可能是这段代码。你真的打电话给[xxx Setinput:0]还是打电话给xxx.input=0?我为什么这么问?遵循Objective-C约定时,类以大写字母开头,变量和方法以小写字母开头,所有三个都是CamelCased。因此,按惯例,Setinput:应为setInput:。这很重要,因为xxx.input=0[xxx setInput:0]的语法糖。如果你不遵循大小写惯例,那么语法糖将不会按预期工作。

相关问题