@import“程序中意外'@'

时间:2013-10-09 12:56:12

标签: ios ios7 xcode5

我将项目更新为Xcode 5并在构建设置中启用了模块。 但是,当我使用Unexpected '@' in program时,我看到了编译器错误@import

#ifndef __IPHONE_7_0
#warning "This project uses features only available in iOS SDK 7.0 and later."
#endif

#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#endif

#ifdef __OBJC__
@import SystemConfiguration;
@import UIKit;

还有什么应该做的吗?

4 个答案:

答案 0 :(得分:64)

来自@hw731的评论我觉得你使用得很糟@import

导入框架的旧语法:

#import <UIKit/UIKit.h>

但现在,您可以使用新语法:

@import UIKit;

您需要启用这些模块以使用关键字@import(当您使用Xcode 5创建新项目时默认启用它):

enter image description here

看看here

答案 1 :(得分:12)

得到同样的错误,检查标准位置:

  • 是的,我的代码语法正确
  • 是的,所有“Apple LLVM 5.0 - 语言 - 模块”设置均为YES。在这个项目和每个目标中都有。
  • 是的,我正在使用工作区,但检查所有项目是否已启用模块。两个项目及其每个目标。
  • 是的,选中我在任何地方都没有任何有趣的“智能”引语
  • 是的,检查我是在header.h或file.m文件中(不是.mm / .c / .cpp / .hpp)

问题是头文件是导入到file.mm 文件中,这似乎不支持新的@import模块语法!将该标题转换回旧样式#import格式,一切都很好。

答案 2 :(得分:5)

我还发现在pch文件中使用以下代码:

#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#endif

@import不兼容。

答案 3 :(得分:0)

当我将UIActivity子类化并将.m文件中的属性写为

时,同样的问题
@property(nonatomic, strong)NSArray *activityItems;

通过将此属性移动到.h文件来修复。