【问题标题】:“Expected method body” error“预期的方法体”错误
【发布时间】:2012-01-25 01:27:33
【问题描述】:

我的应用程序运行良好,然后什么也没做,我在 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

【问题讨论】:

    标签: objective-c xcode


    【解决方案1】:

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

    删除字符解决了问题。

    【讨论】:

    • main.m 文件中不应添加额外字符
    • 有同样的问题,只是为了协议。在其中一个 ViewController 文件中意外键入了一个“-”。这太烦人了,因为问题指向完全不同的方向。
    • 谢谢,在我的一个 ViewController 中遇到了完全相同的问题。多么令人毛骨悚然的错误!查看构建日志会有所帮助。
    • 非常感谢!通过检查本地 git repo 中更改的文件,我发现它更快。
    【解决方案2】:

    我通常会发现像这样的神秘错误会发生,因为我不小心在我的其他源文件之一中输入了一个杂散字符 - 无论是在其他头文件之一的末尾,还是在 .m 文件的顶部.

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

    【讨论】:

    • 在评论开始之前,文件顶部有一个 +!好难找,只好用cmd+z返回,终于找到了!
    【解决方案3】:

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

    如果这不能解决问题,则可能是您的某个头文件中有循环引用。

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

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

    【讨论】:

    • 我检查了循环引用,但事实并非如此。我也关闭并重新打开了 Xcode,甚至重新启动了我的机器,但仍然没有成功。我没有尝试“清洁构建”,我该怎么做?谢谢!!
    • 刚刚完成了干净的构建,但仍然没有运气。不过谢谢!!感谢您的宝贵时间。
    【解决方案4】:

    我遇到了同样的问题:

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

    因为我是 Objective C 的新手,所以我在发送函数参数时忘记了“不使用”左大括号和右大括号

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        基本上是

        预期的方法体

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

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

        【讨论】:

          【解决方案7】:

          从 Internet 粘贴一些代码后也可能出现此消息。您的 sn-p 中可能有一些看不见的字符。

          • 您在 XCode 中看到的不可见字符关闭
          • 隐藏的内容(在另一个文本编辑器中查看)
          • 打开不可见字符时 XCode 7.3 显示的内容*

            您可以通过进入“首选项...>键绑定”配置 XCode 7.3 以显示不可见字符。找到“不可见”并选择一个组合键(例如 Command+shift+F1)。

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

          【讨论】:

            【解决方案8】:

            就我而言,我将实现文件中的新方法复制到头文件中。我还复制了@implementation Class(category) 行并忘记将其更改为@interface。

            【讨论】:

              【解决方案9】:

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

              【讨论】:

                【解决方案10】:

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2012-07-19
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-05-15
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-07-16
                  • 1970-01-01
                  相关资源
                  最近更新 更多