Iphone 调用void函数
在我的应用程序中,我有这个方法Iphone 调用void函数,iphone,objective-c,xcode,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 )UIContr
-(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]
很明显,这段代码没有复制/粘贴到这里,因为
value=input
行缺少分号,因此无法编译。假设在编写SO问题时,语法问题只是一个打字错误的问题,那么代码看起来还可以。这意味着其他一些假设正在崩溃。基于此代码段的最有可能的错误假设是:
Setinput:
方法李>
我怀疑这些按钮并没有连接到这些变量,但仅仅从这个代码片段是不可能分辨出来的。我很好奇为什么有对(UIControlState)
的转换。如果编译时没有它会发生什么
下面是您可以做的事情:单击value=input旁边的行号代码>行在那里设置断点,然后“构建和调试”。当程序到达断点时,在变量视图中仔细查看代码,注意变量的值。你可能需要打开“自我”来看到它们。我怀疑第一个假设是错误的,b_do
和朋友将是0x00
如果没有,它还可以帮助在变量视图(运行->变量视图->显示类型列)中显示类型列,这样您就可以确保按钮是预期的UIButton
对象。这验证了第二个假设是正确的
如果应用程序从未到达该断点,则第三个假设失败,问题不在这段代码中,而是在其他地方
除了可能是这个代码。您真的在调用[xxx Setinput:0]
还是在调用xxx.input=0
?我为什么要问?当遵循Objective-C约定时,类以大写字母开头,变量和方法以小写字母开头,并且所有三个都是大小写的。因此,按照惯例,Setinput:
应该是Setinput:
。这很重要,因为xxx.input=0
是[xxx setInput:0]
的语法糖。如果你不遵循大写惯例,那么语法糖就不会像预期的那样起作用。你希望发生什么?您将ivar值设置为零,它已经是零了alloc
将所有IVAR设置为零。您好,这是我的代码块,存在开关(值)情况0。。。。这不是我所有的代码我知道如果这是我所有的代码就不会发生任何事情编辑你的帖子来显示你的代码-但是,到目前为止,所有的代码都按设计执行像b_这样的变量是如何设置的?它们是Interface Builder中的插座吗?如果是,请检查它们是否正确连接。是的,所有连接都正确,因为如果我从FlipsideView调用Setinput,它会调用,但我会从MainViewController调用它(如果iPad不是iPhone)因此,从ViewDidLoad with condition开始,如果iPad运行该程序,您好,谢谢您的回答是的,这不是复制粘贴,我编辑了问题并放上分号。顺便说一句,当我为所有按钮(从IB)设置标题时,代码会起作用