我们不需要再将框架链接到XCode项目了吗?

 学习社区 发布于 2023-01-01 16:21

基于这个问题

为什么iOS框架依赖项不需要显式链接到静态库

我读了选定的答案但仍然不明白所以我做了一个示例项目

Github上的测试项目

在测试项目中,我从主要项目和静态库(包括Foundation.framework和UIKit.framework)中删除Link Binary With LibrariesFile导航的所有框架,基本上,两个项目链接到0框架.

问题是

在静态库中,它包括MapKit/MapKit.h而没有将Mapkit.framework引用到项目中,为什么它仍在工作?

在主项目中,我从项目中删除UIKit.framework和Foundation.framework,为什么它仍然有效?

既然它现在有效,以后会有什么问题吗?

感谢您的评论.

PS通过工作,我的意思是我可以在模拟器上运行,我可以存档主项目,没有任何错误.

编辑25/07/2014

我尝试使用我正在处理的真实应用程序,它是一样的.

我在文件导航中突出显示了Foundation,UIKit,CoreData和另外10个框架,以及所有这些框架.

取消选中Utilities Panel中的目标 - > Target Membership

建立:通过,运行:通过

我的应用程序的每个功能仍然按预期工作.我不懂.

1 个回答
  • 检查项目构建设置.在LLVM 5.1 - 语言 - 模块下面,您应该看到"自动链接框架"选项.在你的情况下,听起来它设置为'YES',默认值.

    在这种情况下,当您引用编译器不知道的类时,它不会产生错误,而是会找出哪个Framework包含该类并将其链接.在您的代码中,它将MKMapView是触发链接的其他MapKit类之一.

    编辑:来自相关的'什么是新的?' 文件:

    为代码模块导入的框架启用了自动链接.当源文件包含来自支持模块的框架的标头时,编译器会在目标文件中生成额外信息,以在该框架中自动链接.结果是,在大多数情况下,当您使用支持模块的框架API时,您不需要指定要与目标链接的框架的单独列表.

    查看它的另一种方法是编译器足够聪明,#import可以@import在适当构建框架时进行变异.所有的系统框架都已经存在.

    2023-01-01 16:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有