@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列表
Modules功能在Xcode5新建项目的时候已经默认自动开启使用,如果在旧的项目中要使用Modules的话,则打开Target->Build Settings->搜索"Modules",找到Enable Modules(C and Objective-C)设置为Yes即可,"Link Frameworks"同样设置为Yes.
关于WWDC的给出的解释
使用Modules方式 :
将 #import <MapKit/MapKit.h> 替换为 @import MapKit; 即可
而且你也可以只加载framework里面的submodules
@import MapKit.MKAnnotation;
参考文章