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

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

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

18 ответов

Решение

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

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

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

Xcode

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

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

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

;)

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

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

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

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

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

  2. Выберите файл.m, который вы хотите, чтобы он был НЕ ДУГАЮЩИМ НАЖМИТЕ ВВОД Тип -fno-objc-arc

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

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

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

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

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

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

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

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

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

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

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

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

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

    //1. Select desired files
    //2. Target/Build Phases/Compile Sources
    //3. Type -fno-objc-arc
    //4. Done

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам