рефакторинг #ifndef __OBJC_GC_ в приложении с поддержкой дуги - PullRequest
2 голосов
/ 17 января 2012

Я пишу приложение в среде ARC и пытаюсь использовать стороннюю библиотеку, написанную до ARC.Я использую флаги -fno-objc-arc во всех соответствующих файлах, поэтому он компилируется, но проект использует блоки #ifndef __OBJC_GC_ для освобождения памяти, что вызывает ошибки выделения памяти.Я пытаюсь найти правильное решение, и до сих пор у меня есть следующее:

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

2.) удалите блоки #ifndef и скрестите пальцы - не могу работать над проектом сегодня, но это мой следующийпланируем

3.) реорганизовать код, чтобы он соответствовал ARC, и убрать флаги -fno-objc-arc

с большой вероятностью # 2?Насколько сложным будет # 3, и действительно ли это заставит компилятор определять __OBJC_GC_?(есть около 4-5 классов, которые я планирую использовать, но они довольно большие)

Ответы [ 2 ]

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

Вы говорите, что блоки распределения заключены в #ifndef __OBJC_GC_.Обратите внимание, что это #ifndef - «если не определено».

Таким образом, все должно работать «из коробки», если автор правильно поддерживает версию без GC.Вам не нужно удалять ifdefs или подделывать их.

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

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

Я бы предложил рассмотреть другой вариант: отключить ARC для проекта.

...