我正在阅读Swift中的ARC,以更好地理解内存分配和去分配。在我正在读的下面的博客中,我知道Kraken强烈地提到了Tentacle,然后Tentacle强烈地提到了Sucker,但是我很想知道Kraken是否和Sucker有很强的关系?
以下是代码:
class Kraken {
let tentacle = Tentacle() //strong reference to child.
}
class Tentacle {
let sucker = Sucker() //strong reference to child
}
class Sucker {}发布于 2017-05-31 16:38:50
不,没有。sucker对象的引用计数仍然是1。Kraken一松开tentacle,sucker也会消失;)
换句话说,间接强引用不会增加ARC内存管理器使用的ref计数器。
快速测试:
let kraken = Kraken()
let refCount = CFGetRetainCount(kraken.tentacle.sucker)
print("ref count: \(refCount)")产出:
参考数:2
因为它还包括由1函数参数保留的引用,所以您应该将其读入为CFGetRetainCount。
https://stackoverflow.com/questions/44290178
复制相似问题