Alf*_*a07 3 profiling memory-profiling swift
在简单的情况下,它只是对几行代码的强烈盯着是微不足道的:
class A {
var b: B?
}
class B {
var a: A?
}
var a = A()
var b = B()
a.b = b
b.a = a
Run Code Online (Sandbox Code Playgroud)
如何解决> 50k行代码项目的这个问题(从Objective-C/C++移植).例如,有没有办法开发一个工具来在运行时遍历对象图(就像在Java/C#世界中那样)?
您可以使用仪器检测强引用周期,而不是实现对象图遍历:它可以识别内存泄漏并以图形方式显示周期(Apple仪器文档)
您应该用Swift中的弱实例变量替换每个目标C弱属性
class B {
weak var a: A?
}
Run Code Online (Sandbox Code Playgroud)
如果你可以确定它永远不会将nil作为一个值,你可以将它作为无主的前缀
class B {
unowned var a: A
}
Run Code Online (Sandbox Code Playgroud)
然后你可以访问该属性,而不必强制解包变量!
如果你的Objective-C代码使用在arc之前是常量的@properties属性,那么可能还有更多内容
| 归档时间: |
|
| 查看次数: |
1440 次 |
| 最近记录: |