2009-07-28 2 views
2

Я хочу создать ядро ​​приложения, которое подключается к веб-сервису, загружает данные, анализирует его и затем возвращает его в контроллер представления. Это ядро ​​идеально обрабатывало бы запросы от нескольких контроллеров и абстрагировало бы много повторяющегося кода. Кроме того, я хочу потенциально использовать это ядро ​​для приложения mac os x. Стали ли эти задачи хорошей идеей для статической библиотеки? Кроме того, как добавить статическую библиотеку в приложение для iPhone? Как только статическая библиотека добавляется, как мне ее ссылаться (т. Е. Импортные инструкции и т. Д.)?Назначение статической библиотеки

ответ

4

Я хочу создать ядро ​​приложения, которое подключается к веб-сервису, загружает данные, анализирует его и затем возвращает его в контроллер вида. Это ядро ​​идеально обрабатывало бы запросы от нескольких контроллеров и абстрагировало бы много повторяющегося кода. Кроме того, я хочу потенциально использовать это ядро ​​для приложения mac os x. Стали ли эти задачи хорошей идеей для статической библиотеки?

Да.

Также, как добавить статическую библиотеку в приложение для iPhone?

Добавить цель статической библиотеки в свой проект, а затем добавить ее продукт сборки в целевое приложение вашего iPhone. Когда вы начнете работать с вашим Mac OS X, добавьте также продукт сборки библиотеки в эту цель.

Как только статическая библиотека добавляется, как мне ее ссылаться (то есть импортные заявления и т. Д.)?

#import - препроцессорная директива; вы используете его в файле заголовка на этапе предварительной обработки фазы компиляции-источника-файлов.

Компиляция исходных файлов создает объектные файлы, которые компоновщик будет сливать (ссылка) вместе на следующем этапе. Эта фаза также включает компоновку ссылок в любых статических библиотеках.

У вас должен быть продукт сборки библиотек (из целевого объекта библиотеки), добавленный в фазу Link Binaries цели приложения, чтобы линкер связал библиотеку с вашим приложением.

+0

спасибо за ваш ответ - я все еще немного смущен, мне нужны операторы импорта? Если это так, я просто использую имя файла в статической библиотеке для инструкции import? – zpesk

+0

Чтобы импортировать заголовочный файл, вам понадобится инструкция '# import'. '# import' (который является директивой * препроцессора *) и библиотеки (которые вы указываете * компоновщику *) не имеют ничего общего друг с другом. Цель '# import' заключается в' # import' заголовке для интерфейса из библиотеки (например, интерфейса для класса в библиотеке) в исходный файл, в котором вы будете использовать этот интерфейс. –

+0

Проще говоря, заголовок содержит декларации, а библиотека содержит фактические реализации.Вам нужно «# import» декларации, чтобы компилятор знал, какой код вы будете использовать; вам необходимо связать библиотеку с вашим приложением, чтобы ваше приложение имело код, доступный во время выполнения. –

1

Не могу поверить, что я могу создать статическую библиотеку, если вы не хотите распространять ее без распространения источника. Вы должны перекомпилировать для каждой платформы, чтобы вы могли просто добавить файлы .h и .m из общего места (например, не копируйте файл в проекты при их добавлении. «Добавить существующий файл». .. », вы можете отменить выбор флажка« Скопировать элементы в папку целевой группы (если необходимо) »при добавлении). Затем любые изменения, внесенные в файлы библиотеки, будут обновляться в обоих проектах. Построение статической библиотеки просто добавляет еще один уровень сложности (дополнительные цели и т. Д.), Что не нужно (ИМХО, извините, не согласен с Питером ;-).

С наилучшими пожеланиями.

+2

Точка библиотеки - это то, что вы НЕ хотите, чтобы она просто молчала, меняя себя - без предупреждения - вводя новые ошибки, принося назад старые ошибки и т. д. Это сильная версия идеи «инкапсуляции», которая частично вдохновила на создание ООП. Это ужасный кошмар. После того, как вы провели дни, пытаясь отлаживать, почему ваше приложение перешло от «работающего» к «сломанному» без видимых причин и в конечном итоге доказать, что вы изменили НИЧЕГО ... а затем провели дни, размышляя, как это может произойти, и ненавидит Xcode для не будучи в состоянии правильно почистить ... вы увидите ценность библиотек :). – Adam

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