Как я могу отключить ARC для одного файла в проекте?

1342

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

Это возможно? Как отключить ARC для каждого файла?

casademora
источник

Ответы:

2168

Можно отключить ARC для отдельных файлов, добавив -fno-objc-arcфлаг компилятора для этих файлов.

Вы добавляете флаги компилятора в Targets -> Build Phases -> Compile Sources. Вы должны дважды щелкнуть по правому столбцу строки под Флаги компилятора . Вы также можете добавить его в несколько файлов, удерживая кнопку cmd, чтобы выбрать файлы, а затем нажав Enter, чтобы открыть окно редактирования флага. (Обратите внимание, что редактирование нескольких файлов перезапишет все флаги, которые у него уже есть.)

Я создал пример проекта, который имеет пример: https://github.com/jaminguy/NoArc

Xcode

См. Этот ответ для получения дополнительной информации: отключить автоматический подсчет ссылок для некоторых файлов

jaminguy
источник
58
Таким образом, место для добавления этого флага не слишком интуитивно понятно. Но в Xcode 4, на этапах сборки и исходных кодах компиляции, фактически есть два столбца. Один для имени файла, а другой для флагов компиляции для этого одного файла. Здесь вы вводите этот конкретный флаг компилятора.
Касадемора
3
Можно ли указать каталог, т. Е. Все файлы в каталоге? Как насчет группы?
ma11hew28
4
Нет каталогов. Только один файл за раз в настройках сборки :(
casademora
13
@casademora Вы не можете получить достаточно голосов за эту информацию. Спасибо.
theTRON
26
@casademora вы можете выбрать несколько файлов одновременно - но затем не дважды щелкните, а нажмите RETURN. затем просто добавьте -fno-objc-arcи он будет добавлен ко всем выбранным файлам. Редактировать только что видел ответ ниже этого :(
pkyeck
460

Отключите ARC для НЕСКОЛЬКИХ файлов:

  1. Выберите нужные файлы в Target / Build Phases / Compile Sources в Xcode
  2. НАЖМИТЕ ВВОД
  3. Тип -fno-objc-arc
  4. Нажмите Enter или Готово

;)

введите описание изображения здесь

Тибидабо
источник
2
Спасибо! Давно искал эту функцию долгое время. Двойной щелчок не работает, когда выбрано несколько строк, но нажатие клавиши ввода не работает. Так странно.
bobmoff
4
Ух ты. Я бы потратил всю свою карму, чтобы снова заявить об этом. Спасибо, что поделился!
Джеммонс
это, кажется, больше не работает на Xcode 4.3.3. двойной щелчок или нажатие клавиши ввода для выбранных файлов не вызывает диалоговое окно для установки флага -fno-ojbc-arc, у кого-нибудь есть обходной путь для этого?
Том
У меня был 4.3.3, а теперь 4.4 DP7, и он все еще работает просто отлично. Попробуйте перезапустить Xcode, перезагрузить компьютер и восстановить права доступа.
Тибидабо
44

Для Xcode 4.3 более простой способ мог бы быть: Редактировать / Рефакторинг / Преобразовать в ARC target-C, затем отметить файлы, которые вы не хотите конвертировать. Я нахожу этот путь таким же, как при использовании флага компилятора выше.

Цзинцзе Чжан
источник
36

Это очень простой способ сделать отдельный файл без дуги.

Выполните следующие шаги:

Отключить ARC для отдельного файла:

  1. Выберите нужные файлы в Target / Build Phases / Compile Sources в Xcode

  2. Выберите файл .m, который вы хотите, чтобы он был без дуги. Нажмите ENTER. Введите -fno-objc-arc

Файл не ARC для флага проекта ARC: -fno-objc-arc

Файл ARC для флага проекта не ARC: -fobjc-arc

Дипак Наригара
источник
35

Примечание: если вы хотите отключить ARC для многих файлов , вам необходимо:

  1. откройте «Фазы сборки» -> «Компилировать исходники»
  2. выберите файлы с помощью «left_mouse» + «cmd» (для отдельных файлов) или + «shift» (для сгруппированных файлов - выберите первый и последний)
  3. нажмите Ввод"
  4. вставить -fno-objc-arc
  5. снова нажмите «ввод»
  6. прибыль!
digipeople
источник
22

Просто используйте -fno-objc-arcфлаг в Build Phases>Compile Sources

Рахул Гупта
источник
13
  1. Выберите проект XCode
  2. Перейти к целям
  3. Выберите раздел фаз сборки
  4. В разделе этапов сборки выберите источники компиляции.
  5. Выберите файл, который вы не хотите отключать ARC, и добавьте -fno-objc-arc

Отключить ARC для определенного файла

user2538944
источник
13

Можно отключить ARC (автоматический подсчет ссылок) для конкретного файла в XCode.

Выберите Цель -> Фазы сборки -> Исходники компиляции -> Выбрать файл (двойной щелчок) -> Добавить "-fno-objc-arc" во всплывающее окно.

Я сталкивался с такой ситуацией при использовании файлов "Reachibility".

Это показано на рисунке ниже:

введите описание изображения здесь

Джайпракаш Дубей
источник
11

используйте -fno-objc-arc для каждого файла на этапах сборки

Амит Агравал
источник
11

Четыре обязательных шага, как описано в этом видео

    //1. Select desired files
    //2. Target/Build Phases/Compile Sources
    //3. Type -fno-objc-arc
    //4. Done
user2554822
источник
8

Пожалуйста, просто следуйте скриншоту и введите -fno-objc-arc .

введите описание изображения здесь

Тунвир Рахман Тушер
источник
6

Если вы используете Unity, вам не нужно изменять это в Xcode, вы можете применить флаг компиляции в метаданных для конкретного файла (файлов) прямо внутри Unity. Просто выберите их на панели «Проект» и примените на панели «Инспектор». Это важно, если вы планируете использовать Cloud Build.введите описание изображения здесь

Гренландия
источник
5

Добавьте флаг «-fno-objc-arc».

Просто выполните следующие шаги: Приложение> Цели> Фазы сборки> Исходники компиляции> добавьте флаг после класса «-fno-objc-arc»

Манодж Чандель
источник
5

Я думаю, что все остальные ответы объясняют, как отключить MRC (ручной подсчет ссылок) и включить ARC (автоматический подсчет ссылок). Чтобы использовать MRC (ручной счетчик ссылок), т. Е. Отключить ARC (автоматический счетчик ссылок) для файлов MULTIPLE:

  1. Выберите нужные файлы в Target / Build Phases / Compile Sources в Xcode
  2. НАЖМИТЕ ВВОД
  3. Тип -fobjc-arc
  4. Нажмите Enter или Готово
Vin
источник
2

Просто используйте флаг -fno-objc-arc в Фазах сборки> Компилировать источники перед файлами, к которым вы не хотите применять ARC.

C_compnay
источник
-1
  1. выберите проект -> цели -> фазы сборки -> исходники компилятора
  2. выберите файл -> флаги компилятора
  3. добавить -fno-objc-arc
Mnsd
источник
-2

Перейти к приложению -> затем Targets -> Build Phases -> Compile Source

Теперь выберите файл, в котором вы хотите отключить ARC

вставьте этот фрагмент "-fno-objc-arc". После вставки нажмите ENTER

в каждом файле, где вы хотите отключить ARC.

adijazz91
источник
5
Ваш ответ не дает никаких дополнений к этому старому вопросу.
Викингосегундо
-2

Следующий шаг, чтобы включить отключение ARC

Выберите проект XCode. Перейти к целям. Выберите раздел «Фазы сборки». В разделе «Фазы сборки» выберите источники компиляции. Выберите файл, который вы не хотите отключать ARC, и добавьте -fno-objc-arc

Annu
источник
1
Ваш ответ не дает никаких дополнений к этому старому вопросу.
Jomafer
Какое дополнение нужно. если вы знаете лучше, чем предоставить нам.
Год
Я не отрицал тебя. Именно этот вопрос был задан 11 июля 11 года в 5:21. Слишком много ответов с одним и тем же ответом, которые не добавляют никакой полезной информации ... Я подозреваю, что кто-то понизил вас по этой причине ...
Jomafer
не могли бы вы дать мне немного об этом.
апреля