【问题标题】:When do you have to link Frameworks and Libraries to an XCode project?什么时候必须将框架和库链接到 XCode 项目?
【发布时间】:2016-02-17 03:17:19
【问题描述】:

背景:我开始了一个测试Swift 项目,以了解和扩展我对如何将CoreData 实施到我的项目中的知识。当然,每当我只是在测试和玩代码时,我总是会走神,似乎陷入了一些切题的话题。现在需要将框架或库直接链接到 XCode 项目。

所以这是怎么出现的......我正在创建NSManagedObject 的子类,我必须在我的Swift 文件中(写入)import CoreData。一切似乎都很完美;没有错误、警告等。但是,当我在“项目和目标列表”中检查哪些框架和库链接到我的项目时,没有列出任何内容。然后我意识到当你必须import UIKit 时也是如此。显然可以选择直接链接这些框架,但似乎没有必要这样做。

至于我的问题,是否存在不必明确链接到 XCode 项目的默认框架,或者当我打包我的项目以进行部署时,我最终是否必须链接这些框架?如果不是这种情况,从更广泛的角度来看,什么时候需要将框架和库显式链接到 XCode 项目?

编辑***

如果所有 Apple 框架都已自动链接......那么将它们添加到您的项目有什么意义。 (请注意,CoreData.framework 最初并没有像图片中那样明确链接。)

【问题讨论】:

  • 所有苹果框架都是自动链接的,你只需要在你的源代码中说'import 就可以使用它们。您需要明确链接并嵌入到您的项目中的任何其他第三方。
  • 那么在您的项目设置中明确链接到它们有什么意义呢?
  • 这些框架是 iPhone 环境的一部分,但其中有很多,而且大部分不是您的项目直接需要的。对于您明确表示要使用的每个库,必须加载和解释该库,这会占用一些系统资源

标签: ios xcode swift core-data frameworks


【解决方案1】:

没有奇迹发生。

这是因为Xcode(LLVM)引入了模块和自动链接。
(相关关键字:@import而不是#import 和构建设置选项,如 启用模块,自动链接框架,默认情况下,两者都设置为 YES)。

这两个关键字(模块,自动链接标志选项)组合会自动尝试查找并添加任何相关的所有支持模块的框架。

正如从 Xcode 5(实际上是 LLVM 和 clang 编译器前端)介绍的那样,在内部,具有上述默认项目设置的 LLVM 一直是使用模块系统通过 @import/#import 语句自动链接代码中的任何框架。

一旦框架自动与之链接,开发人员就无需再将它们放入链接框架和库中。

所以,这就是 Apple 系统框架(默认框架)不必显式链接到 Xcode 项目的原因。

由于该模块在 Xcode 中可用,因此无需继续在 .pch 文件中导入所有系统框架列表(预编译前缀头。) 所以,这就是为什么 pch setup 也设置为 NO 并且默认情况下不需要在幕后。

据我所知,到目前为止,这些限制仅适用于 Apple 系统框架,这意味着它不能应用于用户框架和其他 C/C++ 库。

希望对你有帮助。

【讨论】:

  • 有助于了解。谢谢。
猜你喜欢
  • 2017-11-09
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多