Подтвердить что ты не робот

Ошибка ожидаемого метода тела

У меня было мое приложение, работающее нормально, а затем ничего не делая, из ниоткуда я получил 2 ошибки в appDelegate.h. Один говорит это:

Ожидаемый селектор для метода Objective-C

Другой говорит следующее:

Ожидаемое тело метода

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

Это мой appDelegate.h:

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate> // I get the errors here

@property (strong, nonatomic) UITabBarController *tbc; 
@property(strong, nonatomic) UIWindow *window;

@end
4b9b3361

Ответ 1

У меня была та же проблема. Наконец, я обнаружил, что в моем main.m я случайно добавил символ "-" в начале файла.

Удаление символа решает проблему.

Ответ 2

Обычно я обнаружил, что таинственная ошибка, подобная этой, происходит из-за того, что я случайно набрал бродячий символ в один из моих других исходных файлов - либо в конце одного из других файлов заголовков, либо в верхней части файла .m.

Посмотрите наверху файла .m, который Xcode пытается скомпилировать. Проверьте это на случайных символов. Если вы его не нашли, посмотрите, какой файл импортируется непосредственно перед AppDelegate.h. Проверьте наличие блуждающих символов в конце этого другого файла заголовка. Если у вас есть файлы заголовков, которые импортируют AppDelegate.h, вам, возможно, придется их проверить. (Нет причин, чтобы какой-либо другой файл .h должен был импортировать AppDelegate.h.)

Ответ 3

Попробуйте закрыть Xcode, а затем снова открыть и выполнить чистую сборку.

Если это не исправить, возможно, у вас есть круговая ссылка в одном из ваших файлов заголовков.

Это может произойти, когда foo.h #imports "bar.h" и bar.h #imports "foo.h" (или иногда его цепочка из трех или более файлов заголовков, импортирующих друг друга по кругу), и это приводит к ложным ошибкам, подобным тем, которые вы видите.

Решение заключается в попытке избежать импорта заголовков в ваши .h файлы и вместо этого использовать ссылки @class для внешних классов в файлах .h и вместо этого помещать #imports в .m файлы.

Ответ 4

У меня была такая же проблема, как:

-(void) gotoHome(){ ...}

Поскольку я новичок в объекте C, я забыл "не использовать" открывающие и закрывающие фигурные скобки при отправке аргументов функции

Ответ 5

В моем случае имя переменной было зарезервировано для С++, потому что я меняю свои файлы на *.mm

Ответ 6

В основном

Ожидаемое тело метода

заключается в том, что где-то есть символ/дополнительный символ!

Для меня это было потому, что имя заранее определенного метода Apple было неправильно написано.

Ответ 7

Это сообщение также может произойти после вставки некоторого кода из Интернета. В вашем фрагменте могут быть некоторые невидимые символы.

  • Что вы видите в XCode с невидимыми символами OFF - What you see in XCode
  • Что скрыто (просматривается в другом текстовом редакторе)
    What's hidden (viewed in another text editor)
  • Что показывает XCode 7.3 с включенными невидимыми символами *
    What XCode 7.3 shows with invisible chars turned ON
    Вы можете настроить XCode 7.3, чтобы показать невидимые символы, перейдя в "Настройки... > привязки клавиш". Найдите "невидимый" и выберите комбинацию клавиш (например, Command + shift + F1).

Итак, ОДИН из решений (см. другие выше...), если у вас есть ошибка "Ожидаемое тело метода", это повторная ввод ошибочной строки с нуля.

Ответ 8

В моем случае я копировал свои новые методы в моем файле реализации в файл заголовка. Я также скопировал строку @implementation Class (category) и забыл изменить ее на @interface.