Im, создающий статическую инфраструктуру iOS. Я хочу использовать сторонний код, в качестве примера можно использовать AFNetworking
. AFNetworking
популярный. Теперь я могу ощутить конфликты пространства имен. Какая здесь самая лучшая практика? Насколько я понимаю, у меня есть 3 варианта:Создание рамки iOS: в том числе сторонние библиотеки и код
1) Постройте AFNetworking
в мою структуру, экспортируя заголовки. Это позволяет клиентам использовать версию AFNetworking
в моей библиотеке, но они не могут использовать другие фреймворки, которые также связывают AFNetworking
. Они полагаются на меня для обновления AFNetworking, если они строят на нем.
2) Код в отношении AFNetworking
Заголовки, но третьи лица включают в свои проекты AFNetworking
. Это добавляет дополнительный шаг для пользователей инфраструктуры, они должны добавить источник AFNetworking
. В будущем могут существовать несовместимости версий, но, по крайней мере, если другая структура использует AFNetworking
, они могут использовать это в одно и то же время.
3) Повторное пространство имен AFNetworking
и сохраняйте заголовки закрытыми. Таким образом, я избегаю конфликтов конфликтов имен каким-либо образом, за исключением того, что становится очень сложно обновить мою копию AFNetworking
. Окончательный бинарный бит становится немного больше, но все проблемы совместимости решены. Для меня это намного больше.
Есть ли у меня другие возможности? Каковы наилучшие методы?
Я не понимаю, почему у вас возникли бы конфликты пространства имен (если вы не префикс своих классов с 'AF'). Используйте последнюю стабильную версию AFNetworking, но позвольте пользователям включить ее. Если API, который вы используете, отображается, он вряд ли изменится. – 2013-02-27 16:30:43
Вы проверили cocoapods? Вы можете добавить зависимость к другим контейнерам. – mkral
@ H2CO3 Если скомпилированные объекты AFNetworking включены в мою бинарную библиотеку, а пользователь добавляет сам код или использует другую фреймворк с включенным им, будут конфликты пространства имен в объекте-c, когда компоновщик попытается сделать окончательное приложение двоичным. – jackslash