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