gpt4 book ai didi

ios - 为什么 block 在引用自身时会创建一个保留循环?

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

我读过许多讨论 block 创建保留循环的文章。但是为什么它会产生一个保留周期呢?该 block 运行后不会释放引用吗?

[UIView animateWithDuration:5
animations:^{
self.variable = somevalue;
}];

例如,如果执行上述操作,对 self 的引用将被释放,对吗?

我已经看到上面的 block 创建了两个强引用。一个是从对象到 block ,一个是 block 到对象。有人可以向我解释为什么循环没有中断吗?代码运行后循环不应该中断吗?

最佳答案

如果一个对象持有一个 block ,而该 block 持有该对象,那么这是一个循环。

如果其他人持有该 block ,而该 block 持有该对象,那么只有当该对象直接或间接持有持有该 block 的人时,才会存在一个循环。

block 在运行时不会自毁,因此只有在 block 被释放时循环才会被打破。

关于ios - 为什么 block 在引用自身时会创建一个保留循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24617163/

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