Файлы не поддерживают функцию ARC, как бороться с - PullRequest
6 голосов
/ 26 декабря 2011

Мой проект использует ARC (автоматический счетчик ссылок), поэтому, когда я пытаюсь импортировать библиотеку ASIHTTPRequest, в которой есть 4 класса, которые использовали в своей реализации оператор autorelease, вот пример:

[self setAccessLock:[[[NSRecursiveLock alloc] init] autorelease]];

Ошибка, которую я получил:

ARC forbids explicit message send of autorelease

Что я должен сделать, чтобы решить эту проблему.

Ответы [ 2 ]

14 голосов
/ 26 декабря 2011

У меня есть решение, мне нужно было добавить правильные флаги в флаги компилятора для каждого файла, который не поддерживает ARC. Для меня я использую Xcode 4.2, поэтому в разделе target -> Build Phases -> Compile Sources дважды щелкните файл, который вы хотите отключить функцию ARC, и поместите -fno-objc-arc, щелкнув Done. И готово;)

Обратите внимание, что если файл не существует в списке, вы можете просто добавить его, нажав кнопку +, а затем выполнить ту же работу, описанную выше.

9 голосов
/ 30 января 2012

Отключить ARC для этого одного класса

При переносе проекта для использования ARC флаг компилятора -fobjc-arc устанавливается по умолчанию для всех исходных файлов Objective-C. Вы можете отключить ARC для определенного класса, используя флаг компилятора -fno-objc-arc для этого класса.

В Xcode на целевой вкладке Фазы сборки откройте группу источников компиляции, чтобы открыть список исходных файлов. Дважды щелкните файл, для которого вы хотите установить флаг, введите -fno-objc-arc на всплывающей панели и нажмите Готово.

...