Im making a static iOS framework. I want to use 3rd party code, lets use AFNetworking
as an example, in my framework. AFNetworking
is popular. I can sense the namespace collisions now. What is the best practice here? As far as I understand I have 3 options:
1) Build AFNetworking
into my framework, exporting the headers. This lets clients use the version of AFNetworking
in my library, but they can't use other frameworks that also link AFNetworking
. They rely on me for updates to AFNetworking if they build on it.
2) Code against the AFNetworking
Headers, but make the third parties include AFNetworking
in their projects. This adds an extra step for framework consumers, they have to add AFNetworking
source. There may be version incompatibilities in the future, but at least if another framework uses AFNetworking
they can use that at the same time.
3) Re-namespace AFNetworking
and keep the headers private. This way I avoid namespace collisions in any way, except that it then becomes really hard to update my copy of AFNetworking
. The final binary gets a bit bigger but all interoperability issues are resolved. This is a lot more work for me.
Do I have any other options? What are the best practices?