Creación de un marco de iOS: incluye bibliotecas de terceros y código

Estoy haciendo un marco de iOS estático. Quiero usar un código de terceros, permite usar AFNetworking como ejemplo, en mi marco. AFNetworking es popular. Ahora puedo detectar las colisiones del espacio de nombres. ¿Cuál es la mejor práctica aquí? Por lo que entiendo tengo 3 opciones:

1) Genere AFNetworking en mi framework, exportando los encabezados. Esto permite a los clientes usar la versión de AFNetworking en mi biblioteca, pero no pueden usar otros frameworks que también vinculan AFNetworking . Confían en mí para las actualizaciones de AFNetworking si se basan en él.

2) Código contra los encabezados de AFNetworking , pero haga que los terceros incluyan AFNetworking en sus proyectos. Esto agrega un paso adicional para los consumidores de framework, tienen que agregar la fuente AFNetworking . Puede haber incompatibilidades de versiones en el futuro, pero al less si otro marco usa AFNetworking , pueden usar eso al mismo time.

3) Re-namespace AFNetworking y mantener los encabezados privados. De esta forma, evito las colisiones del espacio de nombres de cualquier forma, excepto que luego es realmente difícil actualizar mi copy de AFNetworking . El binary final se vuelve un poco más grande, pero todos los problemas de interoperabilidad se resuelven. Esto es mucho más trabajo para mí.

¿Tengo alguna otra opción? ¿Cuáles son las mejores prácticas?

Una mejor opción es usar http://cocoapods.org . De esta forma, es posible declarar las dependencies de las libs y get una sola descarga para todo el proyecto.

No cambie el nombre de los encabezados. Es lento y duro.

PD: una muestra de esto:

http://chariotsolutions.com/blog/post/using-cocoapods-to-manage-private-libraries/

en lo que respecta al número 3, no es completo en "re-namespace", pero es similar a eso:

http://atastypixel.com/blog/avoiding-duplicate-symbol-issues-when-using-common-utilities-within-a-static-library/