2013-02-27 7 views
13

Im, создающий статическую инфраструктуру iOS. Я хочу использовать сторонний код, в качестве примера можно использовать AFNetworking. AFNetworking популярный. Теперь я могу ощутить конфликты пространства имен. Какая здесь самая лучшая практика? Насколько я понимаю, у меня есть 3 варианта:Создание рамки iOS: в том числе сторонние библиотеки и код

1) Постройте AFNetworking в мою структуру, экспортируя заголовки. Это позволяет клиентам использовать версию AFNetworking в моей библиотеке, но они не могут использовать другие фреймворки, которые также связывают AFNetworking. Они полагаются на меня для обновления AFNetworking, если они строят на нем.

2) Код в отношении AFNetworking Заголовки, но третьи лица включают в свои проекты AFNetworking. Это добавляет дополнительный шаг для пользователей инфраструктуры, они должны добавить источник AFNetworking. В будущем могут существовать несовместимости версий, но, по крайней мере, если другая структура использует AFNetworking, они могут использовать это в одно и то же время.

3) Повторное пространство имен AFNetworking и сохраняйте заголовки закрытыми. Таким образом, я избегаю конфликтов конфликтов имен каким-либо образом, за исключением того, что становится очень сложно обновить мою копию AFNetworking. Окончательный бинарный бит становится немного больше, но все проблемы совместимости решены. Для меня это намного больше.

Есть ли у меня другие возможности? Каковы наилучшие методы?

+0

Я не понимаю, почему у вас возникли бы конфликты пространства имен (если вы не префикс своих классов с 'AF'). Используйте последнюю стабильную версию AFNetworking, но позвольте пользователям включить ее. Если API, который вы используете, отображается, он вряд ли изменится. – 2013-02-27 16:30:43

+1

Вы проверили cocoapods? Вы можете добавить зависимость к другим контейнерам. – mkral

+0

@ H2CO3 Если скомпилированные объекты AFNetworking включены в мою бинарную библиотеку, а пользователь добавляет сам код или использует другую фреймворк с включенным им, будут конфликты пространства имен в объекте-c, когда компоновщик попытается сделать окончательное приложение двоичным. – jackslash

ответ

6

Лучшим вариантом является использование http://cocoapods.org. Таким образом, можно объявить зависимости libs и получить одну загрузку для всего проекта.

Не переименовывайте заголовки. Занимает много времени и тяжело.

PD: Образец этого:

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

+3

У этого есть недостаток, требующий от хост-приложения использовать Cocoapods. – ZaBlanc

Смежные вопросы