gpt4 book ai didi

profiling - 如何在 Swift 中检测和调试强引用循环?

转载 作者:搜寻专家 更新时间:2023-10-31 22:09:16 25 4
gpt4 key购买 nike

在简单的情况下,它就像盯着几行代码一样微不足道:

class A {
var b: B?
}

class B {
var a: A?
}

var a = A()
var b = B()
a.b = b
b.a = a

如何为 >50k 行代码项目(从 Objective-C/C++ 移植)解决此问题。例如,有没有办法开发一种工具来在运行时遍历对象图(就像在 Java/C# 世界中所做的那样)?

最佳答案

您可以使用工具检测强引用循环,而不是实现对象图遍历:它可以识别内存泄漏并可以图形方式显示循环 (Apple instruments documentation)

你应该用 Swift 中的弱实例变量替换每个 objective-c 弱属性

    class B {
weak var a: A?
}

如果你能确定它永远不会将 nil 作为值,你可以在它前面加上 unowned

    class B {
unowned var a: A
}

然后您可以访问该属性,而无需使用 ! 强制解包变量

如果您的 Objective-C 代码使用 @properties 属性,这在 arc 之前是标准的,那么可能还有更多内容

关于profiling - 如何在 Swift 中检测和调试强引用循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24054343/

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