0

Я работаю над проектом, который использует IOSГде можно найти #define в проекте Objective-C?

#if defined (FREE_VERSION) 

Проект имеет две цели, каждый из свободной и платной версии. Если я запустил бесплатный, код в соответствии с вышеприведенным оператором срабатывает, и если я запустил оплаченную, произойдет сбой кода «else». Это все, как ожидалось.

Но когда я ищу проект для «FREE_VERSION» или «#defined», я не получаю никаких результатов (кроме инструкций «#if defined»). Итак, где можно определить FREE_VERSION?

Я не очень хорошо знаком с предпроцессорными директивами и #define, поэтому я не могу использовать правильную терминологию здесь. Но любая помощь была бы оценена!

+0

Более читаемая версия для #if определена (FREE_VERSION): #ifdef FREE_VERSION – Szu

+1

@Szu Яснее или нет, это вопрос мнения. Например, я определенно предпочитаю более выразительные 'if defined (...)'. – Sulthan

+0

В Xcode, «Перейти к определению». Проблема только в том, что FREE_VERSION не определена, потому что тогда нет определения. – gnasher729

ответ

2

С такими определениями я предполагаю, что вы найдете его в project settings ->build settings ->preprocessing.

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

DEBUG - пример аналогичного макроса, который по умолчанию задан для конфигурации Debug.

0

Это зависит от вас, чтобы #define это где-то. У вас может быть файл заголовков констант и определить его там.

В бесплатной версии:

Global.h:

#define FREE_VERSION 

Тогда вы можете прокомментировать это позже при составлении платной версии.

+0

Это имеет смысл, но он, по-видимому, уже определен где-то. И я никогда не прокомментирую это (я не могу, так как не могу его найти), но все работает так, как ожидалось, когда я запускаю бесплатную или платную версию. Это как-то определяется для свободной цели, но не для платных. – Hap