@import vs #import

 我来答
黑科技1718
2022-06-20 · TA获得超过5883个赞
知道小有建树答主
回答量:433
采纳率:97%
帮助的人:82.2万
展开全部

关于 @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;

参考文章

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式