Подтвердить что ты не робот

Как узнать, включена ли в программе ARC или нет?

Я создаю проект с поддержкой ARC, используя мастер проекта Xcode. По сравнению с программой без поддержки ARC я не заметил никаких различий. Есть ли подсказка, которая может сказать мне, поддерживает ли моя программа ARC?

Я использую XCode 4.2.1 Build 4D502

4b9b3361

Ответ 1

Вы можете использовать __has_feature, возможно, зарегистрировать, имеет ли проект ARC в консоли:

#if __has_feature(objc_arc)
    // ARC is On
    NSLog(@"ARC on");

#else
    // ARC is Off
    NSLog(@"ARC off");

#endif

В качестве альтернативы вместо того, чтобы просто регистрировать, включен ли ARC, попробуйте сделать компилятор с ошибкой, если ARC включен (или выключен) следующим образом:

#if  ! __has_feature(objc_arc)
    #error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
#endif

Ответ 2

Если вы просто хотите узнать один раз, если у вашего проекта есть ARC, я предлагаю использовать ответ jpalten. Если вы хотите, чтобы ваш код работал только с ARC, я предлагаю qegal's.

Однако, если вы хотите узнать, где находится Xcode, это значение:

  • Выберите свой проект в навигаторе. Это откроет редактор проекта.
  • В редакторе проекта выберите свою цель.
  • В редакторе проекта нажмите "Параметры сборки" (если он еще не выбран).
  • В редакторе проекта щелкните поле поиска и введите OBJC_ARC.

Это приведет к тому, что в настройках сборки будет отображаться одна строка: Objective-C Автоматический подсчет ссылок или CLANG_ENABLE_OBJC_ARC (в зависимости от того, показываете ли вы настройки описаний или имен), Если он установлен на YES, у вас включен ARC.

Это ваш целевой выбор того, используется ли ARC. Обратите внимание, что каждый файл может быть скомпилирован с другим параметром. Это не то, что вы просили, но поскольку у нас уже есть три ответа, я думал, что убью возможный четвертый.:)

Чтобы узнать, какие файлы переопределяют параметр ARC:

  • Выберите свой проект в навигаторе. Это откроет редактор проекта.
  • В редакторе проекта выберите свою цель.
  • В редакторе проекта нажмите Сформировать фазы (не создавать настройки).
  • Разверните фазу Скомпилировать источники.

Здесь вы можете увидеть флаги компилятора для каждого файла. Файлы с этим набором, независимо от того, использовать или не использовать ARC, будут содержать либо -fno-objc-arc, либо -fobjc-arc, для указания MRR или ARC соответственно.

Ответ 3

Или проверить только один раз, добавьте это в свой код:

NSString* dummy = [[[NSString alloc] init] autorelease];

Это должно привести к ошибке, если вы используете ARC. Если это так, ARC включен, все в порядке, и вы можете удалить его снова.

Ответ 4

добавить "-fno-objc-arc" флаги компилятора для всех файлов .m в фазах сборки