Какой шаблон проекта я должен использовать для библиотеки iOS и Cocoa? - PullRequest
2 голосов
/ 10 марта 2012

У меня есть куча кода в проекте iOS (названного «MyLibs»), который я повторно использую в разных приложениях. Я перетаскиваю проект MyLibs в рабочую область любого приложения, которое я создаю. Я не использую модульные тесты как таковые, но у меня есть кнопки, которые очень легко проходят через все тесты в приложении для iPhone.

Я изучаю Какао и хотел бы разделить мою библиотеку на библиотеки, которые я могу использовать в обоих проектах. Я думал, что это будут MyCommonLibs (или MyFoundationLibs), MyIOSLibs и MyCocoaLibs.

Однако при создании нового проекта я должен выбирать между приложением iOS или приложением Cocoa. Похоже, что iOS Framework и Library -> Cocoa Touch Static Library являются подходящими, потому что они связаны с платформой Foundation. С другой стороны, я бы предпочел использовать шаблон приложения, если у него нет серьезных недостатков.

Мне нужно иметь возможность использовать MyCommonLibs в обоих типах приложений, поскольку некоторые из них полезны для обоих, например, категории NSArray и т. Д.

Какой шаблон я должен использовать для MyCommonLibs и должен ли я использовать Library, Framework (в шаблонах Mac OS) или я могу просто использовать обычный шаблон приложения (как я делал до сих пор)?

1 Ответ

2 голосов
/ 10 марта 2012
  1. Создание проекта iOS Framework & Library.Давайте назовем это TestLib .

  2. Добавить новую цель (Файл> Создать> Цель) типа MAC OS X Framework & Library.

Таким образом, вы можете скомпилировать как библиотеку iOS, так и библиотеку MAC OS X из одного проекта.

Вы можете выбрать, какие файлы будут включены в каждую цель.Поэтому, если вы хотите сделать класс доступным как для iOS, так и для MAC OS X, вы добавляете его в оба, и если вы хотите сделать его доступным только для одной платформы, вы можете добавить его только в одну библиотеку.

Как видно на скриншотах ниже, SharedClass доступно в обеих библиотеках, iOSOnlyClass доступно только для iOS и MACOnlyClass доступно только для MAC OS X.

enter image description here

enter image description here

Вы также можете добавить цели для модульных тестов в том же проекте.

Чтобы организовать свой код, вы можете поместить общие классы в группу и классыкаждой цели в отдельной группе.

enter image description here

...