【发布时间】:2011-12-19 12:37:04
【问题描述】:
我认为标题很好地解释了我的问题,我目前正在开发一个满足我个人需求的小型框架,并考虑使用 ARC 构建它(如果可能的话?),并将其用于旧项目中是在 ARC 之前建造的吗?
【问题讨论】:
标签: iphone frameworks automatic-ref-counting
我认为标题很好地解释了我的问题,我目前正在开发一个满足我个人需求的小型框架,并考虑使用 ARC 构建它(如果可能的话?),并将其用于旧项目中是在 ARC 之前建造的吗?
【问题讨论】:
标签: iphone frameworks automatic-ref-counting
是的,有一点需要注意:如果您将 iOS 4.x 作为部署目标,则需要一个补充库来处理旧运行时上的 ARC 编译代码。对于使用 ARC 构建的应用程序,它与应用程序一起打包。如果您在非 ARC 应用程序中使用 ARC 编译的库,则不包括在内。
您可以手动将此库链接到您的非 ARC 应用程序,以避免在旧操作系统版本上出现运行时问题,方法是在应用程序的其他链接器标志中添加 -fobjc-arc。
请参阅this Apple Developer Forums thread 了解更多关于此的讨论。
【讨论】:
-retain 和 -release,它还引入了新的 @autoreleasepool 之类的东西,因此它需要一些运行时帮助。这是 iOS 5.0 内置的,但 4.x 需要这个向后兼容库。
您可以链接到 Apple 提供的胶水库(正如布拉德在上面的回答中所说)。但是,__weak 变量限定符与 4.3 以下的操作系统不兼容(如此处所述:iOS 5 Best Practice (Release/retain?) 在 sudo 的评论中)。
【讨论】:
应该没问题。该库已经编译,所以 ARC/NonARC 不再重要了。
【讨论】: