关于非常老的ARC前Objective-C代码的问题

Ant*_*ton 2 objective-c ios

我们有一个应用程序,很久以前由其他开发公司创建了超级凌乱的代码.最近我们发现它里面有一个bug.经过几个小时的调试,我们发现如果我们在完成使用时注释掉其中一个ViewController的释放命令,那么代码就可以完美地工作.我的问题是:

  1. 注释掉释放命令会导致大量内存泄漏吗?
  2. 最近几天ARC是否可以处理这个问题(仍然可以在没有释放命令的情况下释放内存)?
  3. 如果我将代码添加为正常编写ARC代码,那么旧代码和新代码是否会在同一个文件中共存?

代码太旧了,所以我们不想承担将其转换为ARC代码的风险.如果上面问题3的答案是肯定的,那么改变它将会更加舒适.

Rob*_*ier 5

随机删除release与从某个变量中随机减去1相同,因为你有一个一个一个错误,现在它"似乎工作得更好".是的,它绝对会导致更多问题.只需添加和删除内存管理就无法安全地完成retain,release直到它"似乎有效".

我的建议是让Xcode将您的代码转换为ARC(编辑>重构>转换为Objective-C ARC ....)如果之前有不正确的内存管理,则无法保证解决它(特别是保留循环),但是它会自动解决很多错误.除此之外,您还需要调试内存管理中的错误.

如果无法将此代码转换为ARC,请运行静态分析器(Cmd-Shift-B).无论如何,即使转换为ARC,您也应该这样做.它找不到很多内存问题,但它有很多可以解决的问题.