2013-02-18 4 views
1

Je suis très novice dans le domaine de la programmation ios et travailler avec linker est un tout nouveau monde pour moi. Je ferais de mon mieux pour être précis sur ma question.ios programmation - bibliothèque statique prioritaire dans une bibliothèque statique au niveau de l'application

Contexte: Liaison de bibliothèque statique dans un projet ios à l'aide de xcode.

Problème:

membres Problème: 3 bibliothèques statiques.

libTestLibA.a

libTestLibB.a

libTestLibB_mine.a - mêmes fonctionnalités que libTestLibB.a - mêmes classes/méthodes tout.

Description du problème

Je fais une application à l'aide libTestLibA.a.

libTestLibA a des classes qui dépendent de certaines classes de libTestLibB. Donc libTestLibA.a a libTestLibB.a compilé en lui-même.

Maintenant, j'ai ma propre bibliothèque nommée libTestLibB_mine. Il a exactement la même fonctionnalité que celle de libTestLibB. Mêmes méthodes/classes pour la même fonctionnalité. Je veux que libTestLibA utilise libTestLibB_mine au lieu de libTestLibB. Je viens de compiler des bibliothèques statiques (.a) pour chacun des membres du problème, c'est-à-dire, libTestLibA, libTestLibB et libTestLibB_mine.

Question:

Quand je compile ma demande, puis-je forcer une bibliothèque compilé statique (libTestLibA.a) à utiliser une autre bibliothèque (libTestLibB_mine.a) au lieu de ce qu'il contient déjà (libTestLibB. une)? Si oui, comment? Sinon, y a-t-il du travail?

Merci beaucoup.

Répondre

1

Si A a déjà été satisfait statiquement contre B, alors je ne pense pas que vous pouvez remplacer B par B_mine. Mais comme une solution de contournement, je pense que ce que vous cherchez peut-être ici est "Method Swizzling". Ce qu'il fait est, à l'exécution, remplacer la méthode d'une classe par une autre méthode (intercepter le message et le diriger ailleurs).

Les liens suivants devraient vous être utiles.

+0

Merci pour votre réponse. Swizzling serait difficile parce que je ne suis pas sûr de ce que toutes les classes/méthodes de B utilise A en interne parce que je n'ai pas le code source de A. B_mine est en réalité juste une version différente de B que je veux que mon application utilise en forçant A à utiliser B_mine. Je sais que libTestLibA a les en-têtes publics de libTestLibB et libTestLibB.a liés. Cela signifie que B est statiquement compilé en A? – inspi

Questions connexes