Вопрос об определении метода предупреждения xcode 'XXX' не найден - PullRequest
0 голосов
/ 21 декабря 2009

Я видел здесь что-то 1 , в котором говорится, что я могу удалить эти ошибки в xcode 3, изменив метод, подобный - (IBAction) shakeShakeShake на - (IBAction) shakeShakeShake (id) sender

Я использую iphone SDK 3.0 и XCode 3.2.1 на снежном барсе

Мои ошибки:

Classes / MainViewController.m: 156: предупреждение: «MainViewController» может не отвечать на «-shakeShakeShake»

/ Пользователи / temp / Рабочий стол / src / Таймер обратного отсчета (приложение-утилита) /Classes/MainViewController.m:156:0 / Пользователи / temp / Desktop / src / Таймер обратного отсчета (приложение-утилита) / Классы / MainViewController. m: 156: предупреждение: (Сообщения без соответствующей сигнатуры метода

Classes / MainViewController.m: на верхнем уровне:

Classes / MainViewController.m: 467: предупреждение: неполная реализация класса 'MainViewController'

Classes / MainViewController.m: 467: предупреждение: определение метода для -pickerView: не найдено

Classes / MainViewController.m: 467: предупреждение: определение метода для '-shakeShakeShake:' не найдено

----- (извините за длинные сообщения об ошибках, я попытался сократить их, удалив информацию о компиляторе и пути) ---

Я пытался добавить такие вещи, как

-(void)shakeShakeShake: (id) sender ;

в качестве прототипа для файла .h и файла .m

- (IBAction) shakeShakeShake: (id) sender {

dimView.alpha = 0.0f; }

Внесение этих изменений приведет к тому, что предупреждение исчезнет, ​​но когда я запущу свою программу и выполню эту функцию, она выйдет в Springboard с консольным сообщением:

[MainViewController shakeShakeShake]: нераспознанный селектор отправлен на экземпляр 0x1213a20 2009-12-21 02: 19: 17.389 Таймер обратного отсчета (служебное приложение) [43704: 207] * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «* - [MainViewController shakeShakeShake]: не распознано селектор отправлен на экземпляр 0x1213a20 '

Когда я изменяю функцию обратно на - (IBAction) shakeShakeShake { (даже если я оставляю стиль прототипа с помощью: (id) sender), программа (простой таймер утилиты) работает нормально и не выдает ошибок консоли.

Кажется, я не могу понять, что я делаю неправильно, но меня всегда учили убирать предупреждения, если это возможно, поскольку они могут указывать на проблемы, которые появляются позже и их трудно найти.

Кто-нибудь может указать мне правильное направление здесь? большое спасибо за ваше терпение, я все еще новичок в этом! ; -)

Спасибо, Piesia

Кстати, ShakeShakeShake называется здесь:

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {

if (event.type == UIEventSubtypeMotionShake) { // Ваш код здесь [self shakeShakeShake]; } }

---- сообщения об ошибках следуют

Classes / FlipsideViewController.m: 401: предупреждение: неполная реализация класса 'FlipsideViewController' Classes / FlipsideViewController.m: 401: предупреждение: определение метода для -pickerView: не найдено Classes / FlipsideViewController.m: 401: предупреждение: определение метода для '-shakeShakeShake' не найдено

1 Ответ

0 голосов
/ 21 декабря 2009

Похоже, мне нужно явно указать параметр отправителя в вызове сообщения следующим образом:

//instance method declaration
- (IBAction) shakeShakeShake: (id) sender ;


- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (event.type == UIEventSubtypeMotionShake) {

// message -- method signature + parameter information
        [ self shakeShakeShake: self ] ;

}
}
// ^-- needed for shake

//instance method definition
- (IBAction) shakeShakeShake: (id) sender {

    // make window clear
    dimView.alpha = 0.0f ;      // always undim screen in shake as a failsafe
}

Когда я делаю это таким образом, предупреждения исчезают, и приложение, кажется, работает. Спасибо за ваше время. Piesia

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