Есть ли способ построить приложение Objective-C с Garbage Collection?Как заставить сбор мусора?
Я пишу библиотеку для улучшения приложения Mac (таким образом, я запускаю приложение с DYLD_INSERT_LIBRARIES='/path/to/dylib' /Applications/Original.app/Content/MacOS/Original
).
Когда я запускаю это, я сначала имел проблемы, потому что мой lib использовал ARC, в отличие от оригинального приложения. Теперь у меня отключили ARC, но я получаю эту ошибку во время выполнения, до оригинальных сбоев приложений:
objc[610]: '/Users/me/mylib/myLib.dylib' was not compiled with -fobjc-gc or -fobjc-gc-only, but the application requires GC
objc[610]: *** GC capability of application and some libraries did not match
Однако, похоже, что Apple, теперь убрали поддержку простого старого GC в пользу ARC вместо.
Я попытался использовать GCC_ENABLE_OBJC_GC
от XCode или аргумент -fobjc-gc
для gcc (или clang), но я получаю эту ошибку компилятора: garbage collection is no longer supported
.
Похоже, я застрял ... Есть ли способ заставить сборку lib с GC? Я думаю, что я мог бы использовать старую версию LLVM/gcc, которая все равно будет поддерживать GC, но есть ли более простой способ?
Примечание: Я использую XCode 6.1 и Yosemite, исходное приложение (и, следовательно, моя библиотека) является 32-разрядным.
Большое спасибо
Да, это то, что я понял, как хорошо. Вопрос в том, есть ли способ обойти это ограничение? Я не смогу создать свой lib с XCode или с официальным компилятором LLVM, но, может быть, некоторые трюки (вне XCode явно) позволят мне его построить? – Daladim
Насколько мне известно, самый простой способ - использовать старую версию XCode. Поскольку новые компиляторы больше не поддерживают его, я сомневаюсь, что вы сможете их использовать. – TheDarkKnight
Ну, вот что я попробую. Мне бы хотелось избежать этого, но похоже, что это единственный способ, хотя ... К счастью, я сохранил старый жесткий диск с Snow Leopard на нем (со старыми версиями XCode и компилятора), я возьму его с его ящик, где он просто собирает пыль :) – Daladim