“预期的方法体”错误

时间:2012-01-25 01:27:33

标签: objective-c xcode

我的应用程序工作正常,然后没有做任何事情,我在appDelegate.h出了2个错误。一个人说:

  

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

10 个答案:

答案 0 :(得分:23)

我遇到了同样的问题。最后我发现在我的main.m中,我不小心在文件的开头添加了一个“ - ”字符。

删除角色解决了问题。

答案 1 :(得分:12)

我经常发现像这样的神秘错误发生是因为我不小心在我的其他一个源文件中输入了一个杂散字符 - 在其他一个头文件的末尾,或者在{{1}的顶部文件。

查看Xcode尝试编译的.m文件的顶部。检查它是否有杂散字符。如果找不到,请查看.m之前导入的文件。检查其他头文件末尾的杂散字符。如果您有导入AppDelegate.h的头文件,则可能还需要检查这些文件。 (实际上没有任何其他AppDelegate.h文件必须导入.h。)

答案 2 :(得分:3)

尝试关闭Xcode,然后重新打开并进行干净的构建。

如果不能解决问题,您可能会在其中一个头文件中找到循环引用。

这可能发生在foo.h #imports“bar.h”和bar.h #imports“foo.h”(或者有时它的三个或更多个头文件链在一个圆圈中互相导入)并且它导致像你所看到的那样虚假的错误。

解决方案是尽量避免在.h文件中导入标头,而是在.h文件中使用@class引用用于外部类,而是将#imports放在.m文件中。

答案 3 :(得分:2)

我遇到了同样的问题:

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

因为我是目标C的新手,所以在发送函数参数时我忘了“不使用”打开和关闭括号

答案 4 :(得分:0)

就我而言,变量名保留给C ++,因为我将文件更改为* .mm

答案 5 :(得分:0)

基本上是

  

预期方法正文

是因为某处有一个类型/额外字符!

对我来说,这是因为Apple预先定义的方法名称错误拼写。

答案 6 :(得分:0)

在从Internet粘贴一些代码后也会发生此消息。您的代码段中可能包含一些不可见的字符。

  • 你在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
    您可以通过进入“首选项...&gt;键绑定”来配置XCode 7.3以显示不可见字符。找到“不可见”并选择一个组合键(例如Command + shift + F1)。

因此,如果您遇到“预期方法体”错误,其中一个解决方案(请参阅上面的其他解决方案......)是从头开始重新输入错误的行。

答案 7 :(得分:0)

在我的情况下,我将我的实现文件中的新方法复制到头文件中。我还复制了@implementation Class(category)行,忘了把它改成@interface。

答案 8 :(得分:0)

此消息可能会包含一些不可见的字符。将您的代码粘贴到另一个文本编辑器中,例如 TextMate,您将看到它。

enter image description here

答案 9 :(得分:0)

我遇到了同样的错误,因为我使用的是 RCT_EXPORT_METHOD 而不是 RCT_EXTERN_METHOD