Как я могу отключить ARC для одного файла в проекте? - PullRequest
1321 голосов
/ 11 июля 2011

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

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

Ответы [ 18 ]

2153 голосов
/ 12 июля 2011

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

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

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

xcode

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

459 голосов
/ 01 апреля 2012

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

  1. Выберите нужные файлы на целевых / этапах сборки / компиляции источников в Xcode
  2. НАЖМИТЕ ВВОД
  3. Введите -fno-objc-arc
  4. Нажмите Введите или Готово

;)

enter image description here

45 голосов
/ 19 июля 2012

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

37 голосов
/ 05 июля 2013

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

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

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

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

  2. Выберите файл .m, который вы хотите сделать, NON-ARC PRESS ENTER Тип -fno-objc-arc

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

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

35 голосов
/ 07 марта 2013

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

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

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

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

Disable ARC for a particular file

13 голосов
/ 20 марта 2014

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

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

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

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

enter image description here

11 голосов
/ 25 сентября 2013

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

11 голосов
/ 21 октября 2013

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

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