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


1342

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

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


Ответы:


2168

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

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

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

Xcode

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


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. прибыль!


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

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


13

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

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

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

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

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



11

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

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


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 или Готово

2

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


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

-2

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

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

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

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


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

-2

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

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


1
Ваш ответ не дает никаких дополнений к этому старому вопросу.
Jomafer

Какое дополнение нужно. если вы знаете лучше, чем предоставить нам.
Год

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

не могли бы вы дать мне немного об этом.
апреля
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.