2013-09-30 44 views
3

Objective-CXcode 5中的新语法是@import来导入框架。详细请参照question。好处在于,您不必将项目框架包含在避免链接器错误的项目中,您不需要将引号和.h添加到框架名称中,对于预编译头文件来说就会更快,并且您有一个名称空间保护您不会意外重命名符号。所有很好的补充。目标C @import for modules取代#import吗?

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

+1

检查此[http://stackoverflow.com/questions/18947516/import-vs-import-ios-7 ] –

回答

6

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

@import,到目前为止,仅用于苹果的框架,所以在写你的时候还是必须使用#import为别的。
好消息是,如果你选择加入,任何#import将被编译器隐式替换为你,所以你不需要将以前的代码转换为受益于模块。

此外,我可以很容易地定义我自己的模块吗?

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

要定义自己的模块 - 如果你能 - 你需要做的:

export MyAwesomeModule: 
public: 
    // methods and whatever you want to export 
+0

好的答案!像往常一样;) – HAS

+2

创建自己的模块的方法是使用[模块映射](http://clang.llvm.org/docs/Modules.html#module-map-language)。我没有真正尝试过,但你应该可以用它来创建你自己的模块。 – bames53

2

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

+4

虽然'@ import'很方便,但Xcode在编译时自动将Apple框架的任何'#imports'转换为'@ imports' - 所以您不必使用@ @ import'关键字,仍然可以得到好处。 – Ephemera

+0

它没有那么多将它转换为原因#import的行为像@import - 您的文件保持不变。请注意,这只对新项目自动执行。对于现有项目,请在您的构建设置中启用*启用模块*。 – rickster

+1

对于iOS 8来说,编写自己的框架似乎是可能的,因此使用@import将适用于您自己的代码,并且受到鼓励。 – possen