ios编程 - 在应用程序级别重写静态库内的静态库

问题描述:

我是ios编程领域的新手,使用链接器对于我来说只是一个全新的世界。我会尽我所能精确地解决我的问题。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已经静态地遵守B,那么我认为你不能用B_mine代替B.但作为一种解决方法,我认为你可能在这里寻找的是“方法Swizzling”。它的作用是在运行时用另一种方法替换类的方法(拦截消息并将其引导到其他地方)。

以下链接对您有用。

+0

感谢您的回复。 Swizzling会很困难,因为我不确定B的所有类/方法是什么,因为我没有A的源代码。 B_mine实际上只是B的一个不同版本,我希望我的应用程序通过强制A使用B_mine来使用它。 我知道libTestLibA有libTestLibB的公共头文件和libTestLibB.a链接在其中。这意味着B被静态编译为A? – inspi 2013-02-19 01:44:00