iPhone и IPad - как я разветвляю код?

Мой вопрос - это: Мне разработали приложение для iPhone, и я решил разветвить код, другими словами, я разработаю две версии приложения в этой начальной фазе, один для iPhone и другого для iPad.

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

Как я делаю это, не создавая путаницу на коде?

Каковы лучшие практики? Спасибо за любую справку.

6
задан SpaceDog 21 February 2010 в 15:19
поделиться

4 ответа

Проблема с несколькими целями заключается в том, что это может конфликтовать с моделью распределения.

Насколько я понимаю, приложения для iPad и iPhone будут распространяться как единый бинарник. Приложение должно решить, показывать ли пользовательский интерфейс iPad или iPod во время выполнения.

Это означает, что если вы не хотите иметь в магазине отдельные приложения, 'Foo' и 'Foo iPad Edition', что вы не можете использовать несколько целей и что вам так или иначе придется работать с одной кодовой базой.

Мне это не нравится, потому что в приложении может быть много условных вещей. Если iPad, то сделайте это, иначе сделайте то. Если iPhone, то покажите этот контроллер представления, иначе покажите другой. Я не думаю, что это приведет к красивому коду.

Поэтому сейчас я думаю о том, чтобы сделать что-то среднее: Я создам по сути две базы кода и где-то очень рано в приложении я решу пойти по пути полного кода iPad или iPhone.

2
ответ дан 17 December 2019 в 00:08
поделиться

Вы можете настроить свой проект XCode для использования нескольких целей, затем вы можете назначить некоторый файл исходного кода одной цели, другой или обоим

{{1} }
3
ответ дан 17 December 2019 в 00:08
поделиться

Я не разработчик iPhone, но из того, что указывает St3fan (что он должен распространяться как один двоичный файл), это выглядит как классический случай для фабричного паттерна. Любая вещь, которая отличается друг от друга, реализуется двумя разными способами (с общим интерфейсом), а фабрика выплевывает разную реализацию в зависимости от того, на iPhone или iPad она установлена. Общий код не нужно менять, поэтому он может оставаться как есть.

1
ответ дан 17 December 2019 в 00:08
поделиться

Отвечаю на ваши пункты: 1) "как я делаю это задание" вы должны создать новую цель в меню проекта. в моем случае я использую две разные цели для игры на iPhone (обычная и бесплатная (lite) версия)

  so I created a second Target of Type Application
  this will add a Target to the Groups & Files panel
  and will create a new Info.plist file

  in the Group&File you can show more columns (by right clicking)
  on "Group&Files"), here you have to show the "Target Memebership column"
  for each file you can decide if it is part of a target by pressing the
  corresponding check box

2) "что насчет частей кода". Я не знаю, содержит ли текущая Beta SDK, используемая для разработки приложений для iPad, какие-либо #define, которые можно проверить во время компиляции. В любом случае, вы могли бы установить некоторое специальное #define на целевом уровне и проверить это, чтобы сделать некоторую условную компиляцию

Вы можете найти очень подробную информацию о создании приложений с несколькими целями в специальной документации Apple. Вы можете загрузить ее из iPhone Dev Center вам нужно прочитать это руководство "Xcode Project Management Guide"

1
ответ дан 17 December 2019 в 00:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: