2015-06-04 3 views
3

Об этом я знаю familiar tutorials, но введение шаблона рамки XCode 6 изменило игру.Как построить инфраструктуру iOS с XCode 6

Я уже смотрел WWDC 2014 video о строительстве современных фреймворков, но он больше говорит о расширениях здания, рамки & приложение все внутри одного проекта. Он не указывает, действительно ли структура, которую я делаю с ней, действительно многократно используется для любого проекта.

Я строил рамки XCode 6 way (File-> New Project-> Framework and Library-> Cocoa Touch Framework), но когда я импортирую его в проект тестового приложения (отдельно от проекта framework) - я продолжаю получать различные ошибки.

Пример: Включите немодульный заголовок внутри рамки и т. Д.

Я знаю, что это не то, что он говорит, и есть какие-то недостающие шаги во всем, что я делаю. older tricks, возможно, работал для всех, но я просто не могу найти, какой способ следовать после XCode 6.

Например, есть some folder structure, который необходим инфраструктуре, но XCode 6 не соответствует ему при его создании , Это правильно? Если нет, как я могу изменить способ создания иерархии папок инфраструктуры XCode?

Вернусь ли я в старую школу, или я ввожу какую-то крошечную вещь в XCode 6, что я не могу создать многоразовую структуру?

+0

Создал каркас вместе с наконечниками, используя пучок. Однако nibs не могут загружать изображения с xcassets. Как можно заставить nibs загружать изображения из своего собственного xcasset (xcassets не являются частью пакета или фреймворка - даже если вы хотите сделать это с помощью этапа ресурса компоновки пакетов) –

ответ

1

Я не уверен, что вы пытаетесь создать фреймворк с Objective-C или Swift, так как ваш вопрос не говорит об этом. Я столкнулся с ошибками, которые вы упоминаете с помощью Swift, поэтому я дам вам мой метод для создания фреймворков Swift.

Я обнаружил, что процесс Objective-C очень прост и хорошо документирован, поэтому я пропущу это.

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

Вот шаги:

  1. Создание Структуру с помощью New> Project под IOS> Framework & Library, выберите Cocoa Touch Framework

  2. Чтобы избежать «LD: предупреждение: каталог не найден для опции ... "goto Поиск в библиотеке путей в настройках сборки для вашей цели и удаления путей.

  3. Вы не можете смешивать Objective-C с Swift, поэтому даже не рассматривайте возможность добавления в свой код файла моста Swift-Header.

  4. Есть несколько случаев, когда вам нужно импортировать код из неэкспонированных фреймворков. Я успешно использовал модуль-карту внутри рамки, чтобы справиться с этим случаем.

  5. Я также выбираю CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = ДА в настройках сборки, чтобы решить «включение немодульного заголовка внутри фрейм-модуля». Это похоже на работу

  6. Я удостоверяю, что файл заголовка, который генерируется, помечен как Public (not Project).Нажмите на файл, и вы увидите выбор в инспекторе под «Target Membership»

Вы можете столкнуться с некоторыми странными сообщениями об ошибках при строительстве. Xcode имеет тенденцию сообщать об ошибках компоновщика, когда ваш код не может скомпилировать правильно, что приводит к отсутствию файлов, которые компоновщик должен вывести из своих двоичных файлов. Иногда XCode не отображает ошибки в файлах, которые вы компилируете, и вам нужно перейти вручную на вывод сборки и вернуться к файлам. В другой раз вы столкнетесь с проблемой, когда вам нужно удалить кеш. Эти проблемы я называю XCode-блюзом и постоянно занимаюсь этим. Я обнаружил, что подобные проблемы возникают чаще при создании библиотек. Остальное должно работать так, как ожидалось.

+0

+1 спасибо за путь поиска библиотеки - это сработало. Я строю с целью c. После создания структуры папок, как указано Apple, я избавился от более старых ошибок. Но теперь мое клиентское приложение не может найти объектный файл для диспетчера view, который я экспортирую из фреймворка. Я не вижу, чтобы он был встроен в рамки. Все, что я нахожу, это заголовок и нить. Есть идеи? –

+0

Добавили ли вы файлы в раздел «Источники компиляции» для конкретной цели? Убедитесь, что вы нажимаете на цель и дважды проверяете. Кроме того, убедитесь, что вы включили двоичный файл в целевое приложение. Перейдите в настройки проекта, выберите общую вкладку цели. Добавьте рамки в раздел «Встроенные двоичные файлы» – Laurent

+0

Все готово. Но я предполагаю, что в корневом пакете отсутствует некоторый выходной файл. Я не знаю, почему он не будет включать Viewcontroller.o, когда Viewcontroller.h является одним из публичных заголовков. –

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