@import vs #import

关于@import是iOS 7之后的新特性语法,这种方式叫Modules(模块导入) 或者 "semantic import(语义导入)" ,是一种更好的头部预处理的执行方式,这iOS 7之后你能通过@import语法来导入任何的framework,Modules是一种将所有可执行的framework打包在一起,貌似这种方式比起传统的#import更安全和更高效。

而且另外一个最大的改进就是使用@import之后,你不用在project settings那里添加framework,系统会自动帮你加载上了,方便了很多,也避免了很多不必要的错误,例如忘记了加入framework而出现的 "Linker Error"。

你可以通过输入@import出现的自动提示来看看可以导入的framework列表

@import vs #import_第1张图片
Paste_Image.png

Modules功能在Xcode5新建项目的时候已经默认自动开启使用,如果在旧的项目中要使用Modules的话,则打开Target->Build Settings->搜索"Modules",找到Enable Modules(C and Objective-C)设置为Yes即可,"Link Frameworks"同样设置为Yes.

@import vs #import_第2张图片
Paste_Image.png

关于WWDC的给出的解释

@import vs #import_第3张图片
Paste_Image.png

使用Modules方式
#import 替换为 @import MapKit;即可

而且你也可以只加载framework里面的submodules
@import MapKit.MKAnnotation;

参考文章

原创作者:老区
Email: [email protected]
QQ:81508056
微信ID:kingOU

你可能感兴趣的:(@import vs #import)