Xcode - environment variables
Нужны для динамической конфигурации приложения. Например, подстановки защищенных данных в рантайме. На проекте со скринов ниже переменные окружения использовались в качестве конфигураторов для возможности подстановки моков. Представляет из себя сет элементов вида ключ-значение. Советуется использовать их как read-only свойства.
Важно знать про ограничение, что за работу с переменными окружения отвечает сам Xcode, поэтому, если приложение было установлено из AppStore/TestFlight, переменные окружения использованы не будут.
Как добавить в проект
- Заходим в редактирование схемы
- Переходим во вкладку "Test" - "Arguments"
- Пример добавления "считывателей" переменных окружения по ключам. ProcessInfo - набор информации о текущем процессе
- Пример использования. Так как в данном конкретном случае есть enum MockInfo, то используем считанные значения как булевый параметр
Предопределенные переменные окружения
В Xcode есть несколько предопределенных переменных, доступных для целей отладки. Например:
- NSZombieEnabled - определяет, будет Foundation использовать зомби-объекты в рантайме. Должно помогать в отладке непонятного поведения, вызванного зомби-объектами. Можно читнуть ссылку на эту тему
- NSDeallocateZombies: определяет, должен ли Foundation освобождать все зомби-объекты.
- MallocGuardEdges: включает защиту памяти до и после буфера, чтобы мы могли отлавливать переполнения буфера.
Интересная статья, которая может пояснить что такое зомби-объект
Некоторые предопределенные переменные окружния можно настраивать через вкладку Diagnostics