ios编程-在应用程序级别覆盖静态库中的静态库

标签 ios linker static-libraries

我是 ios 编程领域的新手,使用链接器对我来说只是一个全新的世界。我会尽力准确地回答我的问题。

上下文:使用 xcode 在 ios 项目中链接静态库。

问题:

问题成员: 3个静态库。

libTestLibA.a

libTestLibB.a

libTestLibB_mine.a——与 libTestLibB.a 相同的功能——相同的类/方法。

问题描述

我正在使用 libTestLibA.a 制作应用程序。

libTestLibA 有一些类依赖于 libTestLibB 中的一些类。因此 libTestLibA.a 自身编译了 libTestLibB.a。

现在,我有了自己的名为 libTestLibB_mine 的库。它具有与 libTestLibB 完全相同的功能。相同功能的相同方法/类。我希望 libTestLibA 使用 libTestLibB_mine 而不是 libTestLibB。我刚刚为每个问题成员编译了静态库 (.a),即 libTestLibA、libTestLibB 和 libTestLibB_mine。

问题:

当我编译我的应用程序时,我是否可以强制静态编译库 (libTestLibA.a) 使用另一个库 (libTestLibB_mine.a) 而不是它已经包含的库 (libTestLibB.a)?如果是,如何?如果没有,是否有一些解决方法?

非常感谢。

最佳答案

如果 A 已经针对 B 进行了静态合规,那么我认为您不能将 B 替换为 B_mine。但作为一种变通方法,我认为您在这里寻找的可能是“Method Swizzling”。它所做的是,在运行时,用另一个方法替换类的方法(拦截消息并将其定向到其他地方)。

以下链接应该对您有用。

关于ios编程-在应用程序级别覆盖静态库中的静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14945561/

相关文章:

ios - AVAudioSession 操纵声音输出

objective-c - 如何在 Xcode 中更改 MyFramework_vers.c 的编译标志?

c++ - RTKlib(C 库)与 QT(C++ 代码)

iphone - CoreData 保存/还原未保存的更改

ios - 从按钮开始

c++ - 在 C++ 中使用库中的功能子集

c++ - 为什么在将 C 样式数组传递给需要 std::string 的方法时出现链接器问题?

linux - Linux中通用的静态链接库

iphone - 无法在工作区的XCode 4中链接静态库

ios - Flutter 启动 iOS 应用程序时显示黑屏