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”。它的作用是在运行时用另一种方法替换类的方法(拦截消息并将其引导到其他地方)。
以下链接对您有用。
感谢您的回复。 Swizzling会很困难,因为我不确定B的所有类/方法是什么,因为我没有A的源代码。 B_mine实际上只是B的一个不同版本,我希望我的应用程序通过强制A使用B_mine来使用它。 我知道libTestLibA有libTestLibB的公共头文件和libTestLibB.a链接在其中。这意味着B被静态编译为A? – inspi 2013-02-19 01:44:00