@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列表

Paste_Image.png

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

Paste_Image.png

关于WWDC的给出的解释

Paste_Image.png

使用Modules方式
#import <MapKit/MapKit.h> 替换为 @import MapKit;即可

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

参考文章

原创作者:老区
Email: leo.au@foxmail.com
QQ:81508056
微信ID:kingOU

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容