1

我对 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)?如果是,如何?如果没有,是否有一些解决方法?

非常感谢。

4

1 回答 1

1

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

以下链接应该对您有用。

于 2013-02-18T21:47:48.500 回答