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

Yon*_*nny 17 xcode frameworks core-data ios swift

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

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

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

编辑***

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

项目设置

bor*_*oon 21

没有神奇的事情发生.

这是因为Xcode(LLVM)引入了模块和自动链接.
(相关关键字:@import而不是#import和构建设置选项,如启用模块,自动链接框架,默认情况下,设置为YES). 在此输入图像描述

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

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

一旦框架自动链接到该框架,开发人员就不再需要将它们放在Linked Frameworks&Libraries中.

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

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

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

希望能帮助到你.