Как я могу отключить 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.