繁体   English   中英

将ARC转换为非ARC

[英]Convert ARC to non-ARC

我一直在为10.6+ OS X 64位系统开发一个ARC技术项目。

但是现在程序必须支持32位10.6 OS X系统,但是32位CPU ARC无法正常工作。

如果我只关闭ARC并尝试编译为32位,则会导致很多错误。

使用ARC将程序转换为手动内存管理程序的最佳方法是什么?

32位OS X 10.6支持垃圾回收。 将ARC代码转换为GC代码非常简单,反之亦然,例如,有些情况下ARC需要适当的桥接转换,而GC需要NSMakeCollectible,您可以将它们封装在宏中。

如果使用宏,则可以测试ARC和GC的编译器设置,并根据它们有条件地定义宏 - 更改编译器设置和ARC和GC之间的代码切换。

浏览您的代码并根据需要retain / release对象。 您需要查看对象的每个分配,并查看何时需要释放它。 您还需要查看应该自动释放的内容以及是否/何时需要创建自己的autorelease pools并将其drain 如果您想要做到这一点,这不是可以自动化的东西。

您也可以考虑两者兼顾。 有一个32位目标支持不使用ARC和64位目标。 这将是很多工作,但可能不仅仅是转换。 它将导致更大的二进制文件(可能是代码与资源项比例的1.5倍)。

查看这个问题的第一个答案,以获得更好的解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM