2010-10-19 36 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

相關問題