Это может быть глупый вопрос, но я просто хотел узнать. Я хочу, чтобы мой код обнаружил, включен ли ARC программно. Как мне это сделать? Есть ли какой-нибудь флаг, который я мог бы проверить? На самом деле проблема в том, что я написал библиотеку с открытым исходным кодом. Я использовал release
и retain
. если кто-то другой использует файлы моей библиотеки с использованием ARC, я не хочу, чтобы они получали какие-либо ошибки. как мне это достичь? или есть ли какие-либо возможные способы предоставить какие-либо инструменты для компиляции моей библиотеки перед ее использованием?Как программно определить автоматический подсчет ссылок?
ответ
#if !__has_feature(objc_arc)
//Do manual memory management...
#else
//Usually do nothing...
#endif
Это, конечно, проверка времени компиляции, вы не можете проверить АРК во время выполнения.
Альтернативой было бы установить флаг компилятора -fno-objc-arc
для ваших файлов, которые используют ручное управление памятью в проекте, который в противном случае использует ARC.
Независимо от того, хотите ли вы вообще этого или просто использовать ARC, зависит от того, насколько вы хотите/должны быть обратно совместимы. Код, который поддерживает как ARC, так и MRC, может быть довольно трудно читать и поддерживать.
Вы не определяете его программно, оно действует на основе переводов. То есть, не, как Garbage Collection - это процесс, требующий поддержки всех связанных библиотек (и правильной реализации в этом режиме). У вас могут быть файлы, скомпилированные с помощью ARC, а некоторые - без.
Однако, вы можете detect it at compilation.
Что касается распределения вашей библиотеки: я бы не стал беспокоиться о системе на основе перевода, где ref ref ops условно разрешен. Я бы лично поддержал одну модель (MRC в вашем случае, пока вы не решите ее перенести в ARC), а затем ожидайте, что люди свяжутся с библиотекой или компилируют ее в целевой настройке, чтобы отключить ARC. Условное включение/отключение кода, основанного на наличии функции, требует жестких ошибок, особенно когда это может повлиять на 9% строк кода вашей библиотеки.
Согласовано. Люди могут либо отключить ARC для исходных файлов, либо просто распространять файлы .a, которые будут работать нормально. Я думаю, вы все равно можете использовать #error во время компиляции, чтобы предупредить пользователя, которому они должны отключить ARC для ваших исходных файлов. –
@MikeWeller Это также легко распространять как xcodeproj с источниками (когда это вариант). Явная '# ошибка' на высоком уровне' # include' является приятным прикосновением, но в этом случае эта проблема проявится достаточно скоро (потому что это MRC). Если это необходимо * ARC OTOH, следует считаться требованием высокого уровня '# error' (в случае, если предупреждения статического анализатора были недостаточны для намека или клиент никогда не использовал его). – justin
НЕТ, вы не можете, Xcode бы не скомпилировать в ARC проектов, если ваш источник использует сохраняют-релиз
- 1. malloc + Автоматический подсчет ссылок?
- 2. Автоматический подсчет ссылок Issue - PhoneGap
- 3. Автоматический подсчет ссылок не работает
- 4. CBCentralManager и автоматический подсчет ссылок
- 5. NSInvocation и ARC (автоматический подсчет ссылок)
- 6. Автоматический подсчет ссылок и его окончательный выпуск
- 7. Автоматический подсчет ссылок не освобождает calloc
- 8. Для этого класса необходим автоматический подсчет ссылок
- 9. Правильное использование ARC (автоматический подсчет ссылок)?
- 10. iOS автоматический подсчет ссылок (ARC) назад совместимость?
- 11. iOS: MBProgressHUD и автоматический подсчет ссылок (ARC)
- 12. Где установить автоматический подсчет ссылок - xcode 4.2
- 13. автоматический подсчет ссылок (ARC) и retainCount
- 14. Как работает автоматический подсчет ссылок в Objective C?
- 15. Как сделать автоматический подсчет
- 16. Как я могу определить, использует ли мой проект автоматический подсчет ссылок
- 17. преобразования в автоматический подсчет ссылок (ARC): «Использование необъявленный идентификатор» ошибки
- 18. Сделать CVDisplayLink + Автоматический подсчет ссылок хорошо играть вместе
- 19. Не использовать автоматический подсчет ссылок на конкретный файл
- 20. В каких ситуациях нельзя просто полагаться на автоматический подсчет ссылок?
- 21. iOS - автоматический подсчет ссылок (ARC) против ручного останова-освобождения (MRR)
- 22. Учитывает ли автоматический подсчет ссылок во время выполнения
- 23. Как работает подсчет ссылок для счетчика ссылок?
- 24. Автоматический подсчет людей + щебетание
- 25. Xdebug как подсчет ссылок работает
- 26. как программно отключить автоматический поворот
- 27. MSI подсчет ссылок
- 28. Подсчет ссылок в какао
- 29. Автоматический и пользовательский подсчет Lucene
- 30. ли подсчет ссылок поточно
Xcode и ARC не позволят вам использовать функцию сохранения og и давать вам ошибки. – Martol1ni
@DhilipSiva Пожалуйста, убедитесь, что вы проверяете все грамматические ошибки, выравнивание перед публикацией вопроса. Перед публикацией прочитайте http://stackoverflow.com/faq#etiquette. – Beginner