2015-02-03 5 views
2

Я написал небольшую частную структуру, которую хочу разделить между несколькими приложениями iOS.Как встроить частную инфраструктуру Objective-C в приложение iOS на Xcode 6 с рабочими областями

Вот поток работы я себе:

  1. Прицепные SimpleApp из системы управления.
  2. Pull BobFramework от источника управления.
  3. Каким-то образом Вставить BobFramework в SimpleApp с помощью Xcode.
  4. Строительство проекта.
  5. Выполнено!

Проблема в том, как выполнить шаг «Встраивание с помощью Xcode»?

Я не могу найти пошаговые инструкции о том, как это сделать. Apple's docs - устаревшая ложь.

Все вопросы о переполнении стека, которые я нашел, предполагают, что читатели знают общую процедуру, и я не могу собрать достаточно контекстных подсказок, чтобы заполнить подразумеваемые шаги. На самом деле, я бы сказал, что многие вопросы связаны с тем, что в Apple нет современной опубликованной процедуры, и поэтому многие люди следят за предполагаемыми или угаданными шагами.

Самый прямой, простой, полный и актуальный set of steps Я нашел применение в основном для Swift. Процедура для Swift разумна, и я бы хотел использовать ее, но я использую Objective-C.

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

+0

Почему бы просто не использовать второй файл проекта в вашем рабочем пространстве? –

+0

@IanMacDonald Шаг за шагом как? Я читал десятки однострочных замечаний, которые намекают на части ответов. Я хочу, чтобы этот вопрос задокументировал полный ответ, потому что пока я не нашел его. – Jeff

+0

Шаг 1: Откройте Finder в папку, содержащую ваш проект BobFramework. Шаг 2. Откройте Xcode с рабочей областью, содержащей ваш проект SimpleApp. Шаг 3. Перетащите проект BobFramework в Навигатор проектов в Xcode, чтобы привязать его к той же рабочей области, что и ваш SimpleApp. –

ответ

1

Мне потребовалось некоторое время, чтобы понять это, но я это сделал. Я отправил более elaborate answer on my blog с несколькими снимками экрана.

Теперь, чтобы сконденсировать этот ответ для переполнения стека. Я объясню пример рецепта.

Начальная точка:

  • Workspace имени Sandbox2 с проектом под названием Pen1.
  • BobLib - это название структуры в собственном проекте.
    • Создано файлом | Новые | Проект, iOS | Рамка & Библиотека | Cocoa Touch Framework.
    • В отдельном проекте для моделирования моей конкретной ситуации. Если у вас есть такая возможность, скорее всего, вы должны начать с рамки, уже входящей в рабочую область.
    • Файл заголовка Newhart.h содержит doThatThing Объявление метода.

Цель: ViewController в Pen1 вызывает doThatThing на экземпляр класса Ньюхарт.

Шаги:

  1. Импорт Newhart.h в BobLib.h
  2. Места Newhart.h в общественного.
    1. Выбор Newhart.h в Навигаторе проектов.
    2. В области коммунальных услуг | Инспектор файлов | Целевое изменение членства «Проект» на «Публичный».
  3. Построить BobLib как для симулятора, так и для устройства.
  4. Control-click BobLib.framework и выберите Показать в Finder.
  5. Открыть Sandbox2 в Xcode.
  6. Перетащите BobLib.framework из окна Finder в Pen1.
  7. Проект | Цель | Общий | Встроенные бинарные файлы, добавьте BobLib.framework.
  8. BobLib.framework уже должен быть в проекте | Цель | Общий | Связанные структуры и библиотеки.
  9. Запустить и протестировать приложение. Он должен иметь возможность вызвать doThatThing в экземпляре Newhart.
  10. Это работает только для iOS 8 или выше.
+0

В своем блоге вы сказали перетащить продукт симулятора, а не продукт устройства, когда вы перетаскиваете фреймворк в проект приложения. Зачем? Вы находили документы об этом где-то? Я спрашиваю, потому что в некоторых случаях у меня проблемы с другим поведением, в зависимости от того, перетаскиваю ли я имитатор или инфраструктуру устройства. Кажется странным/багги, что мне придется переделать это, когда я перехожу от устройства к симулятору. –

+0

@RobN Я не хочу давать бесполезный ответ, но также не хочу игнорировать вас. Ответ: Я не помню точно, но я перешел к другому решению. В моей памяти говорится, что динамические библиотеки lib должны соответствовать платформе: симулятор или устройство. Возможно, новый Xcode 6.2 устраняет это неудобство? Может быть, можно добавить и то и другое? – Jeff

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

  • Нет связанных вопросов^_^