Я скачал iOS 5 SDK и обнаружил, что ARC - отличная особенность нового компилятора Apple. В настоящее время многие сторонние платформы не поддерживают ARC. Могу ли я использовать ARC для моего нового кода и оставить текущий код сохранения / выпуска без изменений? Конвертер ARC здесь не работает, потому что некоторые фреймворки, такие как JSONKit, не могут быть конвертированы в ARC с помощью конвертера.
Редактировать:
Ответ состоит в том, чтобы добавить -fno-objc-arc
к компилятору флаги для файлов, которые вы не хотите ARC. В Xcode 4 вы можете сделать это под вашей целью -> Build Phases -> Compile Sources.
objective-c
ios5
automatic-ref-counting
nonamelive
источник
источник
.m
файл. Не.h
файл.Ответы:
Публичные документы ARC , хотя и не совсем понятные по этому вопросу, по-видимому, предполагают, что, если каждый класс является либо ARC, либо полностью управляемым вручную, классы могут быть интегрированы в одну программу.
Вы не можете смешивать только ARC и не-ARC в одном классе; в документе говорится , что посылка
retain
,release
,autorelease
, илиretainCount
сообщения , с помощью любых средств (включая таймеры и отсроченные преформы, использование которых@selector
) запрещены в АРК код. Таким образом, вы не можете делать не-ARC в классе ARC (потому что необходимые сообщения запрещены), и вы не можете делать ARC в не-ARC-классе (потому что ARC добавляет синтаксические элементы, которые недопустимы без ARC).В том же документе немного яснее о том, можете ли вы интегрировать не-ARC библиотеки / фреймворки в программу ARC: Да. Здесь не упоминается, можете ли вы использовать библиотеки / фреймворки ARC в программе, где весь ваш код не является ARC, но, учитывая все вышеперечисленное, подразумевается, что да.
источник
#import
извлечения их из файлов модулей. Настройка флагов компилятора для каждого файла модуля (точнее, каждого файла на этапе сборки «Исходники компиляции»). Компилятор не может узнать, должен ли он использовать ARC или нет для любого другого файла, кроме как путем наследования выбора, который ему был дан для файла модуля, с которого он был запущен.Не очень интуитивно понятно, как отключить ARC для НЕСКОЛЬКИХ файлов, какое-то время я делал это один за другим, пока не понял, как это сделать.
источник
Если вы хотите отключить автоматический подсчет ссылок для некоторых файлов, это действительно просто сделать, просто следуя инструкциям. Вы добавляете флаги компилятора в Targets -> Build Phases -> Compile Sources.
Используемый флаг -fno-objc-arc нажмите enter после записи.! Вы должны дважды щелкнуть по правому столбцу строки под Флаги компилятора. Надеюсь, это поможет Спасибо :)
источник
-fobjc-arc
.Можно отключить ARC для отдельных файлов, добавив флаг компилятора -fno-objc-arc для этих файлов.
Как я могу отключить ARC для одного файла в проекте?
источник