gpt4 book ai didi

ios - 关于非常旧的 Pre-ARC Objective-C 代码的问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:15:55 24 4
gpt4 key购买 nike

我们有一个很久以前由其他开发公司创建的代码 super 困惑的应用程序。最近我们发现它里面有一个错误。经过几个小时的调试,我们发现,如果我们在完成使用后注释掉其中一个 ViewController 的发布命令之一,那么代码将完美运行。我的问题是:

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

代码太旧了,所以我们不想冒将其转换为 ARC 代码的风险。如果以上问题 3 的答案是肯定的,那么我们更改它会更舒服。

最佳答案

随机删除 release 与从某个变量中随机减去 1 是一样的,因为你有一个差一错误,现在它“似乎工作得更好”。是的,它绝对会导致更多问题。内存管理不能通过简单地添加和删除 retainrelease 来安全地完成,直到它“看起来可以工作”为止。

我的建议是让 Xcode 为您将代码转换为 ARC (Edit>Refactor>Convert to Objective-C ARC....) 如果您之前的内存管理不正确,这不能保证修复它(特别是保留循环),但它会自动解决大量错误。除此之外,您还需要调试内存管理中的错误。

如果无法将此代码转换为 ARC,请运行静态分析器 (Cmd-Shift-B)。无论如何你都应该这样做,即使在转换为 ARC 之后。它无法找到很多内存问题,但可以找到很多。

关于ios - 关于非常旧的 Pre-ARC Objective-C 代码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24869437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com