Как я могу отключить ARC для одного файла в проекте?
Я успешно использую ARC в своем проекте. Однако я столкнулся с несколькими файлами (например, в модульных тестах и фиктивных объектах), где правила ARC сейчас немного более хрупки. Я помню, что слышал, что был способ отключить ARC для каждого файла, хотя я не смог найти эту опцию.
Это возможно? Как отключить ARC для каждого файла?
18 ответов
Можно отключить ARC для отдельных файлов, добавив -fno-objc-arc
флаг компилятора для этих файлов.
Вы добавляете флаги компилятора в Targets -> Build Phases -> Compile Sources. Вы должны дважды щелкнуть по правому столбцу строки под Флаги компилятора. Вы также можете добавить его в несколько файлов, удерживая кнопку cmd, чтобы выбрать файлы, а затем нажав клавишу ввода, чтобы открыть окно редактирования флага. (Обратите внимание, что редактирование нескольких файлов перезапишет все флаги, которые у него уже есть.)
Я создал пример проекта, который имеет пример: https://github.com/jaminguy/NoArc
См. Этот ответ для получения дополнительной информации: отключить автоматический подсчет ссылок для некоторых файлов
Отключите ARC для НЕСКОЛЬКИХ файлов:
- Выберите нужные файлы в Target/Build Phases/Compile Sources в Xcode
- НАЖМИТЕ ВВОД
- Тип -fno-objc-arc
- Нажмите Enter или Готово
;)
Для Xcode 4.3 более простой способ может быть: Редактировать / Рефакторинг / Преобразовать в ARC target-C, затем отметить файлы, которые вы не хотите конвертировать. Я нахожу этот путь таким же, как при использовании флага компилятора выше.
Это очень простой способ сделать отдельный файл без дуги.
Выполните следующие шаги:
Отключить ARC для отдельного файла:
Выберите нужные файлы в Target/Build Phases/Compile Sources в Xcode
Выберите файл.m, который вы хотите, чтобы он был НЕ ДУГАЮЩИМ НАЖМИТЕ ВВОД Тип -fno-objc-arc
Файл не ARC для флага проекта ARC: -fno-objc-arc
Файл ARC для флага проекта не ARC: -fobjc-arc
Примечание: если вы хотите отключить ARC для многих файлов, вам необходимо:
- откройте "Фазы сборки" -> "Компилировать источники"
- выберите файлы с помощью "left_mouse" + "cmd" (для отдельных файлов) или + "shift" (для сгруппированных файлов - выберите первый и последний)
- нажмите Ввод"
- вставить
-fno-objc-arc
- нажмите "ввод" еще раз
- прибыль!
Просто используйте -fno-objc-arc
флаг в Build Phases
>Compile Sources
Можно отключить ARC (автоматический подсчет ссылок) для конкретного файла в XCode.
Выберите Цель -> Фазы сборки -> Исходники компиляции -> Выбрать файл (двойной щелчок) -> Добавить "-fno-objc-arc" во всплывающее окно.
Я столкнулся с такой ситуацией при использовании файлов "Reachibility".
Это показано на рисунке ниже:
- Выберите проект XCode
- Перейти к целям
- Выберите раздел фаз сборки
- В разделе этапов сборки выберите источники компиляции.
- Выберите файл, который вы не хотите отключать ARC, и добавьте -fno-objc-arc
Четыре обязательных шага, как описано в этом видео
//1. Select desired files
//2. Target/Build Phases/Compile Sources
//3. Type -fno-objc-arc
//4. Done
Используйте -fno-objc-arc для каждого файла на этапах сборки
Если вы используете Unity, вам не нужно менять это в Xcode, вы можете применить флаг компиляции в метаданных для конкретного файла (файлов) прямо внутри Unity. Просто выберите их на панели "Проект" и примените на панели "Инспектор". Это важно, если вы планируете использовать Cloud Build.
Я думаю, что все остальные ответы объясняют, как отключить MRC(ручной подсчет ссылок) и включить ARC(автоматический подсчет ссылок). Чтобы использовать MRC(ручной счетчик ссылок), т.е. отключить ARC(автоматический счетчик ссылок) для файлов MULTIPLE:
- Выберите нужные файлы в Target/Build Phases/Compile Sources в Xcode
- НАЖМИТЕ ВВОД
- Тип -fobjc-arc
- Нажмите Enter или Готово
Добавьте флаг "-fno-objc-arc".
Просто выполните следующие шаги: Приложение> Цели> Фазы сборки> Исходники компиляции> добавьте флаг после класса "-fno-objc-arc"
Просто используйте флаг -fno-objc-arc в Фазах сборки> Компилировать источники перед файлами, к которым вы не хотите применять ARC.
- выберите проект -> цели -> фазы сборки -> исходники компилятора
- выберите файл -> флаги компилятора
- добавить -fno-objc-arc
Перейти к приложению -> затем Targets -> Build Phases -> Compile Source
Теперь выберите файл, в котором вы хотите отключить ARC
вставьте этот фрагмент "-fno-objc-arc". После вставки нажмите ENTER
в каждом файле, где вы хотите отключить ARC.
Следующий шаг, чтобы включить отключение ARC
Выберите проект Xcode. Перейдите к целям. Выберите раздел Фазы сборки. В разделе Фазы сборки выберите источники компиляции. Выберите файл, который вы не хотите отключать ARC, и добавьте -fno-objc-arc