Objective C中的@import模块是否替代了#import?

4
Xcode 5中,Objective-C的新语法是@import,用于导入框架。请参阅question了解详情。优点是您无需将框架包含在项目中以避免链接器错误,您不需要添加引号和.h来指定框架名称,这对于预编译头文件更快,并且您具有可以保护您免受意外重命名符号的命名空间。这些都是很好的补充。
我的问题是,在您自己的文件(例如MyFancyViewController.h)中,您是否继续使用#import,还是完全替换为@import?此外,我是否可以轻松定义自己的模块?在同一文件中使用两种语法看起来会更混乱。

1
请查看此链接:[https://dev59.com/omMk5IYBdhLWcg3w0RCU] - Nishant Tyagi
2个回答

6
对于你的项目文件,你是否继续使用 #import 或者完全替换为 @import?目前,@import 仅适用于 Apple 框架,因此在写作时,你仍需要对其他内容使用 #import。
好消息是,如果你选择加入,编译器将自动隐式替换任何 #import,因此你不需要转换以前的代码来受益于模块化。
还有,我可以轻松地定义自己的模块吗?是和否。是,很容易,但是...不,你不能,因为当前不支持非 Apple 框架的此功能。
如果你能够定义自己的模块,你需要这样做:
export MyAwesomeModule:
public:
   // methods and whatever you want to export

很好的答案!像平常一样 ;) - HAS
2
创建自己的模块的方法是使用模块映射。我实际上还没有尝试过,但你应该能够使用它来创建自己的模块。 - bames53

2

@import 只适用于官方框架。对于 MyFancyViewController.h,请继续使用 #import


4
尽管@import很方便,但是Xcode在编译时会自动将任何苹果框架的#imports转换为@imports - 所以你根本不需要使用@import关键字,仍然可以获得相同的好处。 - Ephemera
它并不是将其转换,而是使 #import 的行为类似于 @import -- 您的文件保持不变。请注意,这仅对新项目自动执行。对于现有项目,请在构建设置中打开“启用模块”。 - rickster
1
在iOS 8中,似乎可以编写自己的框架,因此使用@import将适用于您自己的代码,并受到推荐。 - possen
@possen 谢谢。我稍后会检查并更新答案。 - Shmidt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接