Use dos versiones de la misma biblioteca

Estoy trabajando en un proyecto de iOS que incluye una biblioteca estática creada por otra compañía. La biblioteca incluye una versión anterior de AFNeworking y no tengo ningún file fuente.

Ahora necesito usar una versión más reciente (y less dañada) de afneworking, pero no puedo include la misma class dos veces en el proyecto (por supuesto) porque todos los "símbolos duplicates".

Entiendo que es imposible replace la versión incluida en la biblioteca, pero ¿cómo puedo include otra versión a lo largo de la anterior?

¿Hay una forma (fácil) de refactorizar todo el marco antes de includelo en mi proyecto?

Gracias

Tendrá que volver a empaquetar la biblioteca estática para eliminar los files AFNetworking embeddeds.

Desembale la biblioteca con:

$ ar x libwhatever.a 

Y vuelva a empaquetarlo, incluidos todos los files excepto los files de object AFNetworking:

 $ ar cr libwhatever.a file1.o ... fileN.o 

Luego deberá vincular su file ejecutable con la nueva biblioteca estática AFNetworking y esperar que no haya habido cambios en la API que rompan el código en libwhatever.a . Si los hay, entonces dudo que haya mucho que hacer.

La mejor y más adecuada manera de manejar esto sería ponerse en contacto con el creador de la biblioteca estática y getlos para resolver la situación. Podrían resolverlo actualizando la versión incorporada de AFNetworking, eliminando su dependencia de AFNetworking o agregando un prefijo para su copy integrada de AFNetworking. La última probablemente sea una buena idea de todos modos cuando una biblioteca de terceros incorpora una biblioteca diferente, porque de lo contrario sería imposible usar dos bibliotecas simultáneamente, ambas incluyen la misma biblioteca de terceros.

También puede refactorizar la copy de AFNetworking que se incluye para cambiar los nombres de las classs para tener un prefijo, aunque esto debería ser innecesario, ya que el proveedor de la biblioteca estática debería haberlo hecho ellos mismos.

Por último, puede encontrar una biblioteca diferente que cumpla lo mismo que su actual, pero que no incrusta AFNetworking.

Me temo que esto no es fácil de hacer. Muy pocos entornos le permiten vincular contra dos versiones separadas del mismo marco al mismo time, y Xcode / iOS no es una de ellas.

Como lo veo, tiene tres opciones:

1) Enlace contra su biblioteca y use la misma versión de AFNetworking que usan.

2) Enlace contra su biblioteca, y cargue manualmente la versión más nueva de AFNetworking y extraiga símbolos de ella. Tenga en count: esto se volverá feo rápido y los futuros mantenedores se preguntarán qué estaba fumando.

3) Haz que actualicen su biblioteca.

En una nota al margen, no sé las circunstancias aquí, pero en general deberían proporcionarle fonts. Es una práctica muy atrasada proporcionar solo una biblioteca estática (estática) y no hay manera de saber qué está haciendo dentro. Tendrá que firmar un contrato de licencia de software y lo que sea para proteger sus intereses.