在iOS项目中使用 module 和不使用 module 的区别

LLVM 提供了模块化引入文件的方案,于是我们知道一下两种方式均可以导入Mapkit的文件:

@import MapKit.MKAnnotation;

#import <MapKit/MKAnnotation.h>

那么问题来了:这两种导入有什么区别吗?

第一种是模块导入,第二种是传统引入头文件,想知道一般开发的时候使用某种有什么直接的区别吗?

我试了一下两种方式均是可行的,但是Xcode默认开启了modules,而头文件默认还是用 #import <UIKit/UIKit.h> 的方式引入头文件,想知道这是为什么。谢谢

阅读 11.9k
2 个回答

看了猫神的博客突然懂了点,自己回答一下。

module 在使用的时候用 @import 即可。如果所有代码都需要这样重写必定是一项浩大的工程,所以 Apple 已经提前把这部分工作做好了。只要使用的是 iOS7 的 SDK,将 Enable Modules 打开后,然后保持原来的 #import 写法就行了,编译器会在编译的时候自动地把可能的地方换成 modules 的写法去编译。

第一个导入只是说形式上的导入,通常使放在.h文件上面。因为它不会把.m的文件导入进去。
当你的.m文件要真正用到框架内容时候,你还是要用#import来再次导入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题