在XCode 4.2 .h模块中缺少@end +期望标识符“{”错误

时间:2011-10-26 18:31:53

标签: objective-c ios xcode

我无法摆脱类模块上的两个错误,即使我已将代码简化为最小表达式:

#import <Foundation/Foundation.h>

@interface MyClass : NSObject

@end

这两个错误都在@interface行上报告,它们是: - 缺少@end - 期望的标识符或'{'

9 个答案:

答案 0 :(得分:32)

检查同一页面上#imported的头文件,并验证头文件是否与@interface / @ end语句匹配。

我遇到了同样的问题,XCode报告我的.m文件的@implementation缺少@end语句,即使我把它简化为:

#import "MasterViewController.h"
#import "MyBadHeaderFile.h"
@implementation MasterViewController
@end

实际上,这个bug是#imported MyBadHeaderFile.h文件中缺少的@end。

答案 1 :(得分:4)

我遇到了类似的问题,在我的代码中添加}为我找到了错误。

在我添加}之前,我收到了以下错误:

  1. 程序中的意外@(解析问题)
  2. 预期}(解析问题)
  3. 实现上下文(语义问题)中缺少
  4. @end

答案 2 :(得分:4)

rokjarc的评论应该是正确答案:

1)编译器可以指向你完全错误的文件。通过项目中的所有.h和.m文件,检查匹配的'@interface'/'@ end','@ implementation'/'@ end'等等。

2)如果您误导导入.m文件而不是.h

,也会发生这种情况

答案 3 :(得分:2)

错误出现在哪个文件中无关紧要。确保检查您最近修改过的所有文件。我似乎已将一个文件从测试项目复制到我的实际项目中,并在其中一个文件中忘记了@end。它给了我完全不相关的.h文件的错误。

答案 4 :(得分:1)

尝试从“在项目设置中编译源代码”

中删除此类的实现文件

答案 5 :(得分:0)

@interface MyClass : NSObject{

}

@end

答案 6 :(得分:0)

我遇到了类似的问题,代码很好但是却抛出了这个错误。

我最终通过清理项目来解决它,你试过吗?

答案 7 :(得分:0)

PEBKAC +静态分析器字符串缺乏特异性

现有答案肯定有用。我只是想添加一个导致这种情况的常见PEBKAC;并强调CLANG应该在这里更清楚。具有领域知识的人应该提交补丁以使错误消息更清晰。无论如何,消息的\n@end\n部分都是荒谬的。

  

(在设计用于帮助用户的消息中显示 \ n 的换行符   GUI? 真的 CLANG?)

原因

当您刚刚创建了一个新类时,@interface&amp; @implementation个文件看起来非常相似,Xcode会自动将光标放在实现中。

如果您在实现文件中不假思索地开始输入您的界面(您的方法签名声明),您将最终得到此警告,因为分析器在没有打开和关闭大括号的情况下看到方法。

一个视觉示例,如图所示

Missing @end is a case of PEBKAC

答案 8 :(得分:0)

我有同样的错误,那是因为我有

@interface MyViewController ()

在MyViewController.m

中声明了两次