2010-10-19 41 views
0

我有这个方法调用void函数在我的应用程序

-(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] 
+2

你预计会发生什么?你将伊娃尔值设置为零,这已经是。 'alloc'将所有的ivars设置为零。 – Sven 2010-10-19 16:36:09

+0

你好这是我的代码块有开关(值)的情况下0 ....这不是所有我的代码我知道什么都没有发生,如果这个我所有的代码 – 2010-10-19 16:42:16

+0

编辑您的帖子来显示您的代码 - 但到目前为止,所有按照设计执行 – KevinDTimm 2010-10-19 16:52:06

回答

1

很显然,该代码不会复制/粘贴在这里作为value = input行缺少一个分号,这将永远不会编译。假设在编写SO问题时,语法问题只是打字错误的问题,代码看起来不错。这意味着其他一些假设正在崩溃。基于此代码段最可能错误的假设是:

  1. 变量连线到UIButtons
  2. 变量UIButtons。
  3. 正在调用Setinput:方法。

我怀疑这些按钮没有连接到这些变量,但从这段代码片段中无法分辨出来。我很好奇为什么演员到(UIControlState)那里。如果没有它编译会发生什么?

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

如果不是,它也可以帮助在变量视图(运行 - >变量视图 - >显示类型列)中显示类型列,以便按照预期确保按钮是UIButton对象。这验证了第二个假设是正确的。

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

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

+0

你好,感谢回答是这不是复制粘贴,我编辑问题,并把分号。顺便说一句,代码工作时,我为我的所有按钮设置标题(从IB) – 2010-10-19 18:42:05

相关问题