Перед Swift я бы определил набор схем для альфа, бета и дистрибутивных сборок. Каждая из этих схем будет иметь набор макросов, которые были определены для управления определенным поведением на уровне проекта. Простейшим примером является макрос DEBUG = 1, который определен по умолчанию для всех проектов Xcode в схеме по умолчанию для сборки Run. Можно запросить #ifdef DEBUG ... и принять соответствующие решения в коде, даже компилируя ненужный код.
Кажется, что этот тип конфигурационного гейтинга не так прост, используя swift, так как макросы не поддерживаются. Может кто-нибудь предложить аналогичный подход, мне все равно, если код компилируется, как таковой. Я хотел бы использовать функции, основанные на схеме сборки.
$(inherited)
он используется в целевых настройках для наследования настроек проекта.$(inherited)
делает мой комментарий неактуальным, спасибо!У нас возникла проблема с нежеланием устанавливать флаги компилятора swift, потому что мы не хотели устанавливать их и обновлять их для различных целей и т. Д. Кроме того, в нашей смешанной кодовой базе мы не хотели помнить установить наши флаги надлежащим образом все время для каждого языка.
Для наших мы объявили файл в ObjC
PreProcessorMacros.h
В них
PreProcessorMacros.m
Затем в вашем заголовке Objective-C
Теперь используйте это в своей кодовой базе Swift
Это определенно обходной путь, но он решил нашу проблему, поэтому я разместил его здесь в надежде, что это поможет. Это не означает, что существующие ответы являются недействительными.
источник
Более быстрое решение для метода Логана. Установить
-D DEBUG
вOther Swift Flags
изSwift Compiler - Custom Flags
раздела в настройках сборки вашей цели.Затем объявите следующий метод в глобальной области видимости:
Теперь используйте его как
источник
Для меня, установить отладочный элемент « Active Compilation Condition » в «DEBUG» сработало.
Затем с помощью ключа DEBGU работа в #IF DEBUG работает в режиме отладки и #ELSE в режиме выпуска:
Используйте просто как следовать:
источник
Я работаю в смешанной языковой кодовой базе, где код obj-c использует макрос для отправки отладочных сообщений на консоль (и этот макрос опирается на наш флаг препроцессора отладки). Я хотел иметь возможность вызывать этот же макрос в быстром коде ...
Немного раздражает, что я не могу просто вызвать макрос прямо в быстром коде, но, по крайней мере, теперь у меня есть только одно место в проекте, чтобы беспокоиться о включении / выключении моего флага отладки.
источник