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

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

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

 

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

Вы добавляете флаги компилятора в "Цели" → "Сформировать фазы" → "Скомпилировать источники". Вам нужно дважды щелкнуть по правой колонке строки под флагом компилятора. Вы также можете добавить его в несколько файлов, удерживая кнопку cmd, чтобы выбрать файлы, а затем нажмите Enter, чтобы открыть окно редактирования флага. (Обратите внимание, что при редактировании нескольких файлов будут перезаписаны все флаги, которые могут быть уже установлены.)

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

 (function(w, d, n, s, t) {
 w[n] = w[n] || [];
 w[n].push(function() {
 Ya.Context.AdvManager.render({
 blockId: "R-A-248011-3",
 renderTo: "yandex\_rtb\_R-A-248011-3",
 async: true
 });
 });
 t = d.getElementsByTagName("script")[0];
 s = d.createElement("script");
 s.src = "//an.yandex.ru/system/context.js";
 s.async = true;
 t.parentNode.insertBefore(s, t);
 })(this, this.document, "yandexContextAsyncCallbacks");

 ![xcode]()

См. этот ответ для получения дополнительной информации:
[Отключить автоматический подсчет ссылок для некоторых файлов](/questions/2834/disable-automatic-reference-counting-for-some-files)

 

  **Отключить ARC** в  **МНОГОФУНКЦИОНАЛЬНЫХ файлах:**

* Выберите желаемые файлы на этапах Target/Build/Compile Sources в Xcode
* **НАЖМИТЕ ВВОД**
* Тип  **-fno-objc-arc**
* Нажмите  **Ввести** или  **Готово**

 (function(w, d, n, s, t) {
 w[n] = w[n] || [];
 w[n].push(function() {
 Ya.Context.AdvManager.render({
 blockId: "R-A-248011-4",
 renderTo: "yandex\_rtb\_R-A-248011-4",
 async: true
 });
 });
 t = d.getElementsByTagName("script")[0];
 s = d.createElement("script");
 s.src = "//an.yandex.ru/system/context.js";
 s.async = true;
 t.parentNode.insertBefore(s, t);
 })(this, this.document, "yandexContextAsyncCallbacks");

;)

 ![enter image description here]()

 

Для Xcode 4.3 может быть проще: Edit/Refactor/Convert to objective-C ARC, затем проверьте файлы, которые вы не хотите преобразовывать. Я нахожу этот путь таким же, как с использованием флага компилятора выше.

 

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

* открыть "Фазы сборки" → "Скомпилировать источники"
* выберите файлы с  **"left\_mouse" + "cmd"**  (для разделенных файлов) или  **+ "shift"** 
(для сгруппированных файлов - выберите первый и последний)
* нажмите "enter"
* Вставить `-fno-objc-arc`
* снова нажмите "enter"
* прибыль!

 

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

Следуйте инструкциям ниже:

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

* Выберите нужные файлы в разделе "Целевые/Сформировать фазы" / "Скомпилировать источники в Xcode"
* Выберите файл .m, который вы хотите сделать НЕ-ARC
НАЖМИТЕ ВВОД
Тип  **-fno-objc-arc**

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

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

 

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

 

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

 ![Disable ARC for a particular file]()

 

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

  **Выбрать цель → Сформировать фазы → Скомпилировать источники → Выбрать файл (двойной щелчок) → Добавить "-fno-objc-arc" во всплывающее окно.**

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

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

 ![enter image description here]()

 

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

 

Четыре обязательных шага, как описано в этом [видео](https://www.youtube.com/watch?v=zgBuGgTrfhA)

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

```
 

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

 [![введите описание изображения здесь]()](/img/d8edc5e33ea83e3aa88efd74536fe57c.png)

 

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

 

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

Простые шаги:
Приложение > Цели > Сборка фаз > Скомпилировать источники > добавить флаг после класса "-fno-objc-arc" 

 

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

* Выберите желаемые файлы на этапах Target/Build/Compile Sources в Xcode
* НАЖМИТЕ ВВЕРХ
* Тип -fobjc-arc
* Нажмите "Enter" или "Готово"

 

Чтобы отключить ARC для отдельных файлов, перейдите к фазе сборки в настройках проекта, затем щелкните по источникам компиляции.

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

 [![]()](/img/bcbc0793b90c201f0303e7cc4e7b1782.png)

Источник:
[Отключить ARC для индивидуального класса](http://applemacosx.com/2015/11/29/disable-automatic-reference-counting-for-individual-classes/)

 

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

 

GO to App → then Targets → Build Phases → Compile Source

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

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

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

 

Следующий шаг для включения отключения ARC

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