Отключить автоматический подсчет ссылок для некоторых файлов - PullRequest
183 голосов
/ 23 июня 2011

Я скачал iOS 5 SDK и обнаружил, что ARC - отличная особенность нового компилятора Apple.В настоящее время многие сторонние платформы не поддерживают ARC.Могу ли я использовать ARC для моего нового кода и оставить текущий код сохранения / выпуска без изменений?Конвертер ARC здесь не работает, потому что некоторые фреймворки, такие как JSONKit, не могут быть конвертированы в ARC с помощью конвертера.

Редактировать:

Ответ - добавить -fno-objc-arcфлаг компилятора для файлов, которые вы не хотите ARC.В Xcode 4 вы можете сделать это под своей целью -> Build Phases -> Compile Sources.

Ответы [ 4 ]

78 голосов
/ 25 апреля 2012

Не очень интуитивно понятно, как отключить ARC для MULTIPLE файлов, какое-то время я делал это один за другим, пока не понял, как это сделать.

  1. Выберите нужные файлы в Target / Build Phases / Compile Sources в Xcode (CMD + щелчок или Shift + щелчок)
  2. PRESS ENTER (двойной щелчок сбросит выбор,так что это не работает)
  3. Тип -fno-objc-arc
  4. Нажмите Enter или Готово
73 голосов
/ 23 июня 2011

Публичные документы ARC , хотя и не совсем ясно по этому вопросу, по-видимому, предполагают, что, пока каждый класс является либо ARC, либо полностью управляемым вручную, классы могут быть интегрированы в одну программу .

Вы не можете смешивать только ARC и не-ARC в одном классе; В документе говорится, что отправка сообщений retain, release, autorelease или retainCount любым способом (включая таймеры и отсроченные исполнения, использующие @selector) запрещена в коде ARC. Таким образом, вы не можете делать не-ARC в классе ARC (потому что необходимые сообщения запрещены), и вы не можете делать ARC в не-ARC-классе (потому что ARC добавляет синтаксические элементы, которые недопустимы без ARC).

В этом же документе немного яснее о том, можете ли вы интегрировать не-ARC библиотеки / фреймворки в программу ARC: Да. Здесь не упоминается, можете ли вы использовать библиотеки / фреймворки ARC в программе, где весь ваш код не является ARC, но, учитывая все вышесказанное, подразумевается, что да.

35 голосов
/ 21 апреля 2012

Если вы хотите отключить автоматический подсчет ссылок для некоторых файлов, это действительно просто сделать, просто следуйте инструкциям. Вы добавляете флаги компилятора в Targets -> Build Phases -> Compile Sources.

xcode

Используемый флаг: -fno-objc-arc нажмите Enter после записи.! Вы должны дважды щелкнуть по правому столбцу строки под Флаги компилятора. Надеюсь, это поможет Спасибо:)

2 голосов
/ 22 марта 2013

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

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

...