Библиотека для приложений iOS и OS X?
Некоторое время я убивал свободное время, создавая инструментарий/библиотеку 2D-игр. Он написан в Objective C и состоит из системы рендеринга OpenGL и цельной группы AI, кода физики, множества специализированных контейнеров и других связанных с игрой вещей. Помимо механизма просмотра на основе OpenGL (очевидно), большая часть этого кода должна быть легко переносимой в iOS, поскольку она использует только Foundation Framework и эту структуру представляется в iOS. Пока я тестировал только различные компоненты с помощью Cocoa NSOpenGLView, но теперь я хочу создать библиотеку OS X/iOS.
Мой вопрос:
Какая лучшая стратегия для создания библиотеки Objective-C, которая может быть интегрирована в приложения iOS или OS X?
Диалоговое окно "Новый проект" Xcode предлагает только:
iPhone OS; Библиотека:
- Cocoa Нажмите Статическую библиотеку.
Mac OS X, Framework и библиотека:
- Cocoa Структура
- Cocoa Библиотека
- Пакет
- Библиотека BSD C
- Библиотека STL С++
- Библиотека JNI
На первый взгляд ни один из них, похоже, не предназначен для создания библиотеки, которая может быть интегрирована в приложения OS X или iOS.
Ответы
Ответ 1
Ну, наконец, я нашел правильный набор условий поиска Google, поэтому, чтобы ответить на мой собственный вопрос (DOH!), кажется, что можно поделиться кодом, по крайней мере, между приложениями iPhone и, возможно, приложениями iPhone и OS X в пределах определенные ограничения. Вы должны создать "статическую библиотеку" и использовать "ссылки на перекрестные ссылки":
http://www.clintharris.net/2009/iphone-app-shared-libraries/
http://www.amateurinmotion.com/articles/2009/02/08/creating-a-static-library-for-iphone.html
http://zetetic.net/blog/2010/02/15/building-static-libraries-to-share-code-on-iphone-and-mac-os-x-projects/
http://weston-fl.com/blog/?p=808
Не тестировал это, но выглядит многообещающим.
Ответ 2
Вы можете сделать это с помощью Целей.
Создайте новый проект для библиотеки Cocoa. Затем добавьте новую цель для статической библиотеки iOS. Когда вы создаете новые файлы, убедитесь, что они добавлены к соответствующим целям (т.е. Предположительно как в вашем случае), так и при необходимости настройте параметры каждой целевой сборки.
Проекты, использующие вашу библиотеку на разных платформах, должны будут ссылаться на соответствующий продукт, но вам не нужно будет дублировать код.