"import"和"linking"框架有什么区别?

8
我是一名新手,正在学习Xcode和Swift语言。我试图理解在ViewController中使用"import"以及在我的项目中使用"framework import"的用法。 例如:如果我使用CoreLocation,我只需要在我的ViewController中导入CoreLocation,还是我也需要在我的项目中导入CoreLocation.framework呢? 我问这个问题是因为只使用在我的ViewController顶部导入"import CoreLocation"就可以使所有东西正常工作,而不需要导入它的框架。 谢谢!
1个回答

12

源代码中的 import 有助于编译您的代码,确保正确的头文件被找到。在“项目设置”中,“构建阶段”的“链接二进制文件与库”部分(现在也包括在“摘要”选项卡下的“已链接的库和框架”)指定了您的目标代码将与哪些框架和库进行链接。

历史上我们总是需要分别指定这两个内容,但现在有一个项目设置“自动链接框架”,如果打开,将自动将框架链接到您的项目中,如果您在源代码中 import 它。您还必须打开“启用模块”。


那么如果“自动链接框架”开启,我只需要在我的源代码中添加import而不需要添加框架吗? - Giuseppe
1
是的,对于框架来说是这样的。对于库(例如libsqlite3.0.dylib等),您仍然需要手动添加,但对于框架,它应该会自动添加它们。请注意,为使此功能正常工作,您需要同时启用“自动链接框架”和“启用模块”。 - Rob
是的,它们都是开启的。例如:在我的应用程序中,我使用MapKit和CoreLocation。在此之前,在“功能”部分中,我将地图设置为开启状态。现在,即使没有手动链接框架,我也将其设置为关闭状态。这正常吗? - Giuseppe
使用地图,我相信您需要打开“地图”功能。但是您不需要手动将CoreLocation添加到链接框架列表中。仅仅拥有import CoreLocation就足够了(尽管为了请求授权以确定用户的位置,您需要在plist中添加适当的授权请求密钥)。授权和plist设置完全是两回事。所有“自动链接框架”所做的就是使您无需手动链接各种框架,而只需导入即可。 - Rob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接