目标C @import for modules是否取代了#import?

pos*_*sen 4 macos cocoa objective-c ios xcode5

在新语法Objective-CXcode 5@import导入一个框架.

请参阅问题了解详情.优点是您不必在项目中包含框架以避免链接器错误,您不需要将引号和.h仅添加到框架的名称,对于预编译的头文件更快,并且您有一个名称空间保护您免受意外重命名符号.所有不错的补充.

我的问题是,对于您自己的文件,例如MyFancyViewController.h,您是继续使用#import还是@import完全替换它?另外,我可以轻松定义自己的模块吗?在同一个文件中使用两种语法看起来更麻烦.

Gab*_*lla 6

对于你包括你的项目文件你继续使用#import还是@import完全取代它?

@import到目前为止,仅适用于Apple框架,所以在撰写本文时,您仍然需要使用#import其他任何东西.
好消息是,如果您选择加入,#import编译器会为您隐式替换任何内容,因此您无需转换以前的代码即可从模块中获益.

另外,我可以轻松定义自己的模块吗?

是的,不是.
是的,这很容易,但是......
不,你不能,因为非Apple框架目前不支持此功能.

要定义自己的模块 - 如果可以 - 您需要执行以下操作:

export MyAwesomeModule:
public:
   // methods and whatever you want to export
Run Code Online (Sandbox Code Playgroud)

  • 创建自己的模块的方法是使用[module maps](http://clang.llvm.org/docs/Modules.html#module-map-language).我实际上没有尝试过,但您应该可以使用它来创建自己的模块. (2认同)