Ответ 1
У меня была та же проблема. Наконец, я обнаружил, что в моем main.m я случайно добавил символ "-" в начале файла.
Удаление символа решает проблему.
У меня было мое приложение, работающее нормально, а затем ничего не делая, из ниоткуда я получил 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
У меня была та же проблема. Наконец, я обнаружил, что в моем main.m я случайно добавил символ "-" в начале файла.
Удаление символа решает проблему.
Обычно я обнаружил, что таинственная ошибка, подобная этой, происходит из-за того, что я случайно набрал бродячий символ в один из моих других исходных файлов - либо в конце одного из других файлов заголовков, либо в верхней части файла .m
.
Посмотрите наверху файла .m
, который Xcode пытается скомпилировать. Проверьте это на случайных символов. Если вы его не нашли, посмотрите, какой файл импортируется непосредственно перед AppDelegate.h
. Проверьте наличие блуждающих символов в конце этого другого файла заголовка. Если у вас есть файлы заголовков, которые импортируют AppDelegate.h
, вам, возможно, придется их проверить. (Нет причин, чтобы какой-либо другой файл .h
должен был импортировать AppDelegate.h
.)
Попробуйте закрыть Xcode, а затем снова открыть и выполнить чистую сборку.
Если это не исправить, возможно, у вас есть круговая ссылка в одном из ваших файлов заголовков.
Это может произойти, когда foo.h #imports "bar.h" и bar.h #imports "foo.h" (или иногда его цепочка из трех или более файлов заголовков, импортирующих друг друга по кругу), и это приводит к ложным ошибкам, подобным тем, которые вы видите.
Решение заключается в попытке избежать импорта заголовков в ваши .h файлы и вместо этого использовать ссылки @class для внешних классов в файлах .h и вместо этого помещать #imports в .m файлы.
У меня была такая же проблема, как:
-(void) gotoHome(){ ...}
Поскольку я новичок в объекте C, я забыл "не использовать" открывающие и закрывающие фигурные скобки при отправке аргументов функции
В моем случае имя переменной было зарезервировано для С++, потому что я меняю свои файлы на *.mm
В основном
Ожидаемое тело метода
заключается в том, что где-то есть символ/дополнительный символ!
Для меня это было потому, что имя заранее определенного метода Apple было неправильно написано.
Это сообщение также может произойти после вставки некоторого кода из Интернета. В вашем фрагменте могут быть некоторые невидимые символы.
Итак, ОДИН из решений (см. другие выше...), если у вас есть ошибка "Ожидаемое тело метода", это повторная ввод ошибочной строки с нуля.
В моем случае я копировал свои новые методы в моем файле реализации в файл заголовка. Я также скопировал строку @implementation Class (category) и забыл изменить ее на @interface.