вызов функции void - PullRequest
       2

вызов функции void

0 голосов
/ 19 октября 2010

в моем приложении у меня есть этот метод

 -(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;




   }
}

в контроллере mainview, когда я пишу этот код, ничего не происходит, почему?

1 Ответ

1 голос
/ 19 октября 2010

Ясно, что этот код не был скопирован / вставлен здесь, поскольку в строке value = input отсутствует точка с запятой, и это никогда не скомпилируется. Предполагая, что синтаксические проблемы являются просто опечатками при написании SO-вопроса, код выглядит хорошо. Это означает, что некоторые другие предположения рушатся. Наиболее вероятные ложные предположения, основанные на этом фрагменте кода:

  1. переменные, подключенные к кнопкам UIB
  2. переменные - это UIButtons.
  3. Вызывается метод Setinput:.

Я подозреваю, что кнопки не связаны с этими переменными, но из этого фрагмента кода невозможно узнать. Мне любопытно, почему приведение к (UIControlState) есть. Что произойдет, если вы скомпилируете без него?

Вот что вы можете сделать, чтобы понять это: щелкните номер строки рядом со строкой value = input;, чтобы установить точку останова, а затем «Построить и отладить». Когда программа достигнет точки останова, пошагово пройдитесь по коду, обращая внимание на значения ваших переменных в представлении переменных. Возможно, вам придется открыть «я», чтобы увидеть их. Я подозреваю, что первое предположение неверно и b_do, а друзья будут 0x00.

Если нет, это также может помочь показать столбец Тип в представлении переменных (Выполнить -> Просмотр переменных -> Показать столбец типа), чтобы вы могли убедиться, что кнопки являются UIButton объектами, как вы ожидаете. Это подтверждает, что второе предположение верно.

Если приложение никогда не достигает этой точки останова, то третье предположение не удалось, и проблема не в этом коде, а где-то еще.

За исключением того, что это может быть этот код. Вы действительно звоните [xxx Setinput:0] или xxx.input=0? Почему я спрашиваю? Следуя соглашениям Objective C, классы начинаются с заглавной буквы, переменные и методы начинаются с строчной буквы, и все три имеют CamelCased. Итак, по соглашению Setinput: должно быть setInput:. Это важно, потому что xxx.input=0 является синтаксическим сахаром для [xxx setInput:0]. Если вы не следуете правилам использования заглавных букв, синтаксический сахар не будет работать должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...