Пакетное добавление флага -fno-objc-arc к (нескольким) исходным файлам

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

Я знаю, что мне нужно установить флаг "-fno-objc-arc" для каждого из этих файлов, но Xcode не дает мне возможность для пакетного редактирования - мне нужно добавить этот флаг в каждый файл вручную, что может оказаться утомительным, если вам нужно установить его для нескольких файлов.

Есть ли у кого разумный подход?

Ответ 1

Выберите те, для которых вы хотите добавить флаг (с помощью Shift и/или Command) и нажмите Enter, чтобы отобразить редактор флагов. Нажмите Готово, чтобы применить введенный флаг к выбранным файлам.

Учебник

Я написал сообщение , чтобы служить в качестве учебника для этого процесса.

Ответ 2

Напротив, самым простым вариантом является использование инструмента преобразования ARC в разделе "Редактирование" > "Рефактор".

Это не очень понятно, но в основном вы просто проверяете файлы, которые хотите использовать ARC, и снимите флажок с того, что у вас нет. Это сделает следующее:

1) Файлы, которые не отмечены, будут иметь флаг флага -fno-objc-arc.

2) Проверяемые файлы будут преобразованы в ARC

3) Проверенные файлы, которые уже были преобразованы в ARC, будут не затронуты

Прочтите это внимательно. То, что иногда путает людей, заключается в том, что они предполагают, что файлы, которые уже были преобразованы, должны быть оставлены без контроля при повторном запуске инструмента, но это будет неправильно применять к ним файлы -fno-objc-arc (что приводит к утечкам).

Вы должны подумать о инструменте преобразования ARC как "пакетный выбор ARC-совместимых файлов и конвертировать файлы, которые еще не являются ARC-инструментами", а не инструмент прямого преобразования.

Вы можете запустить инструмент преобразования столько раз, сколько хотите - эффекты не являются кумулятивными (хотя преобразование файлов в ARC не является обратимым).

Ответ 3

Мне нужно установить файлы, которые не должны поддерживать ARC (главным образом сторонний код).

В дополнение к управлению флагами вы можете просто создать статическую библиотеку для этих источников, а затем ссылку.