iPhone - переключение между локальной и производственной средой - PullRequest
7 голосов
/ 14 января 2010

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

Это небольшая боль в заднице, если вы часто переключаетесь между двумя серверами. Кроме того, я могу случайно выпустить приложение, которое все еще использует локальный URL!

Я думал, что, может быть, XCode может помочь мне с этим, так как он имеет понятие конфигурации «Отладка» и «Выпуск» для сборки. Поэтому мой вопрос: могу ли я как-то изменить конфигурацию отладки так, чтобы она указывала на URL локального сервера? Может быть, путем указания на файл свойств или plist, который содержит URL-адрес конкретной среды. Затем я мог бы сделать две версии этого файла свойств и сделать так, чтобы конфигурация отладки указывала на одну, а конфигурация выпуска указывать на другую.

Кто-нибудь знает, как мне это сделать?

Ответы [ 3 ]

5 голосов
/ 14 января 2010

Поместите этот код туда, где вам нужно использовать конфигурацию, основанную на режиме (отладка / выпуск) = (разработка / производство).

Лучшее место для этого - файл _Prefix.pch "ProjectName".

#ifndef __OPTIMIZE__ // __OPTIMIZE__ is not enabled, it means that the active config is Debug, so here you have to put your code for development mode

// For example
#define SERVER_URL @"http://my.test.server/something"

#else //__OPTIMIZE__ is defined, so put here your production code

// For example
#define SERVER_URL @"http://my.production.server/something"

#endif // __OPTIMIZE__

Ура,
VFN

2 голосов
/ 14 января 2010

В одном из ваших заголовочных файлов (например, в предварительно скомпилированном заголовочном файле) определите макросы с URL. Взгляните на эту статью и используйте аналогичный подход.

Кстати, я использую подход регистрации из этой статьи во всех своих приложениях - он работает как шарм, я настоятельно рекомендую его!

1 голос
/ 14 января 2010

Вы можете определить макросы препроцессора в xcode, просто отредактировав настройки языка gcc:

Перейдите в меню «Проект» и выберите «Редактировать настройки проекта». Перейдите на вкладку «Сборка».

Перейти в раздел с пометкой «GCC 4.0 - Язык». Есть настройка под названием «Другие флаги C». Добавьте туда все макросы "-Dwh независимо".

...