Skip to main content

Xcode - environment variables

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

Важно знать про ограничение, что за работу с переменными окружения отвечает сам Xcode, поэтому, если приложение было установлено из AppStore/TestFlight, переменные окружения использованы не будут.

Как добавить в проект

  1. Заходим в редактирование схемы edit-scheme
  2. Переходим во вкладку "Test" - "Arguments" env-args
  3. Пример добавления "считывателей" переменных окружения по ключам. ProcessInfo - набор информации о текущем процессеvars-reading
  4. Пример использования. Так как в данном конкретном случае есть enum MockInfo, то используем считанные значения как булевый параметр usage-example

Предопределенные переменные окружения

В Xcode есть несколько предопределенных переменных, доступных для целей отладки. Например:

  • NSZombieEnabled - определяет, будет Foundation использовать зомби-объекты в рантайме. Должно помогать в отладке непонятного поведения, вызванного зомби-объектами. Можно читнуть ссылку на эту тему
  • NSDeallocateZombies: определяет, должен ли Foundation освобождать все зомби-объекты.
  • MallocGuardEdges: включает защиту памяти до и после буфера, чтобы мы могли отлавливать переполнения буфера.

Интересная статья, которая может пояснить что такое зомби-объект

Некоторые предопределенные переменные окружния можно настраивать через вкладку Diagnostics default-env-vars