【发布时间】:2012-03-06 15:42:37
【问题描述】:
我制作了一个使用 ARC 编码的静态库。我计划分发这个库供其他人使用。我知道在非 ARC 项目中包含 ARC 静态库不需要做任何事情,但是包含 ARC 头文件呢?例如,我的 ARC 静态库的头文件将属性声明为 weak 和 strong,但是当我尝试在非 ARC 项目中包含这些头文件时,编译器会崩溃。
有什么想法吗?
【问题讨论】:
-
如果我没记错的话,这个是做不到的。您可以为 ARC 项目中的某些文件禁用 ARC,但不能相反...我认为您应该考虑将项目迁移到 ARC。这个问题可能会有所帮助:stackoverflow.com/questions/6368600/…
-
您可以通过
-fobjc-arc为单个文件打开 ARC。但问题与预编译的静态库有关。我假设整个库都将使用 ARC 构建。 -
是的,整个库都是用 ARC 构建的。
-
@JuniorB。 - 您确实可以在非 ARC 应用程序中使用启用 ARC 的框架(我现在为我的一个开源框架这样做)。除了标头兼容性之外,您需要注意的唯一另一件事是,如果您部署到 Snow Leopard 或 iOS 4.x,您需要将
-fobjc-arc添加到您的应用程序的其他链接器标志中,以便获得必要的 libarclite被链接进来。
标签: objective-c ios cocoa-touch static-libraries automatic-ref-counting