我有一个项目,其中包含共享库作为源文件。
一些库类需要包含一些框架(例如已知的 Apple Reachability)。
这些框架未包含在项目中,因为我不使用需要它们的类/方法。
我有一个引用所有库标头的 MyStandardLib.h,它包含在我的应用程序的 .pch 中。
但是...
构建我的应用程序时,链接器会为我在应用程序中不使用/调用的那些对象生成链接错误,因此从逻辑上讲它们不应该被链接。
举个例子,如果我从项目中删除有问题的类和框架,一切都会正常工作。
如果我添加所需的框架:
如何避免这些链接器错误,并避免不应该发生的链接:
这些错误的原因很明显,因为您在项目中包含的框架确实需要其他框架(根据您提供的信息,它们使用:Reachability、CFNetwork框架和CoreLocation框架)
发生的事情是,当编译链接你的对象时(在编译器的意义上),它也在你添加的框架中寻找对象'提到',但它没有找到它们,因为它们还没有被包含到你的项目。
如果您使用与框架 B 链接的框架 A,那么如果您的应用程序 C 使用框架 A,它也需要框架 B,因为框架并不完全是自包含的。
如果您的代码在没有这些框架的情况下进行编译,并且您的应用程序需要占用较小的空间,只需将它们从构建阶段中删除即可。
但是,如果没有这些框架就无法编译,您将别无选择,只能将它们包含在您的项目中,因此,会增加应用程序所需的最终空间。