Добавление тега в проект с поддержкой ARC - PullRequest
1 голос
/ 17 января 2012

В проекте с поддержкой ARC есть способ программно добавить тег -fno-objc-arc в сам код.

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

Ответы [ 2 ]

6 голосов
/ 17 января 2012

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

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

#if __has_feature(objc_arc)
...
#endif

.предупреждение, говорящее

#warning This file is not ARC compatible, add the -fno-objc-arc tag

Но еще более элегантным решением является использование этой функции для автоматического ветвления кода во время компиляции, чтобы он работал как для сборок ARC, так и для сборок не ARC.

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

https://gist.github.com/1563325

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

https://github.com/nicklockwood/iRate/tree/master/iRate

Преобразование файла класса таким образом занимает всего несколько минут.

1 голос
/ 17 января 2012

Нет - не в самом коде. Он хранится в файле вашего проекта, поэтому, если вы отправите весь проект кому-то другому, он должен работать. Однако вы не можете просто отправить им несколько классов и выполнить эту работу (это должен быть весь проект).

...