[英]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.