【发布时间】:2015-02-12 09:38:24
【问题描述】:
还有什么方法可以用垃圾收集构建一个 Objective-C 应用程序吗?
我正在编写一个库来增强 Mac 应用程序(因此我使用 DYLD_INSERT_LIBRARIES='/path/to/dylib' /Applications/Original.app/Content/MacOS/Original 运行该应用程序)。
但是,当我运行它时,我首先遇到了问题,因为我的库使用了 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。
我曾尝试使用 XCode 中的 GCC_ENABLE_OBJC_GC 或 gcc(或 clang)的 -fobjc-gc 参数,但我收到此编译器错误:garbage collection is no longer supported。
看起来我被困住了......有没有办法用GC强制构建我的库?我想我可能会使用仍然支持 GC 的旧版本 LLVM/gcc,但是有没有更简单的方法?
注意:我使用的是 XCode 6.1 和 Yosemite,原始应用程序(因此我的库)是 32 位的。
非常感谢
【问题讨论】:
标签: xcode macos build garbage-collection dylib