什么时候必须将框架和库链接到XCode项目?

时间:2015-11-16 04:07:46

标签: ios xcode swift core-data frameworks

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

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

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

编辑***

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

Project Settings

1 个答案:

答案 0 :(得分:19)

没有神奇的事情发生。

这是因为Xcode(LLVM)引入的模块和自动链接。
(相关关键字: @import而不是#import 和构建设置选项,例如启用模块,自动链接框架,默认设置为YES。 enter image description here

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

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

一旦框架自动与之相关联,开发人员就不需要将它们放在Linked Frameworks&图书馆了。

因此,这就是为什么Apple系统框架(默认框架)不必与Xcode项目明确链接的原因。

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

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

希望它有所帮助。