Другой код / конфигурируется в Выпуске и Отладочной сборке (Obj-C)

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

редактирование: Я понимаю, что Ваш вопрос был предназначен, чтобы быть агностиком языка, но в Java, отражение используется для идентификации, каких участников объект имеет, тогда как самоанализ позволяет Вам определять, какие свойства JavaBeans объект имеет, который является, почему класс самоанализа находится в java.beans пакете. Я не уверен, чем точное различие между условиями было бы на других языках, тем не менее,

5
задан Christian 10 September 2009 в 16:01
поделиться

3 ответа

Вы можете проверить наличие #ifdef DEBUG , но я бы рекомендовал вам этого не делать.

Между сборками отладки и выпуска существует множество различий. Различные оптимизации компилятора, разные наборы символов и т. Д.

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

Итак, для этого я бы предложил пользователю значение по умолчанию. См. NSUserDefaults .

Обратите внимание, что простые пользовательские значения по умолчанию могут быть установлены из командной строки.

Таким образом, вы можете сделать что-то вроде:

/path/to/Myapp.app/Contents/Macos/Myapp -ServerMode Debug
7
ответ дан 18 December 2019 в 09:51
поделиться

Сначала определите символ препроцессора, который установлен только в вашей конфигурации сборки отладки, в соответствии с вопросом 367368 - назовите его, скажем, DEBUG. Затем вы можете выполнить

#ifdef DEBUG
  // Code that only compiles in debug configuration
#else
  // Code that compiles in other configurations (i.e. release)
#endif
2
ответ дан 18 December 2019 в 09:51
поделиться

Вы можете использовать специфичные для конфигурации определения, чтобы изменить выполняемый код. Сначала прочтите о том, как определить символ препроцессора в Xcode . Затем сделайте в своем коде что-то вроде этого:

#if DEBUG_MODE
#define BACKEND_URL @"http://testing.myserver.com"
#else
#define BACKEND_URL @"http://live.myserver.com"
#end

NSURLRequest *myRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:BACKEND_URL]];
8
ответ дан 18 December 2019 в 09:51
поделиться
Другие вопросы по тегам:

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