繁体   English   中英

为什么在引用自身时,块会创建一个保留周期?

[英]Why do blocks create a retain cycle when referencing self?

我读过许多有关创建保留周期的块的文章。 但是为什么要进行保留周期呢? 块运行后不会释放参考吗?

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

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

我已经看到上面的代码块创建了两个强大的参考。 一种是从对象到块,另一种是从块到对象。 有人可以向我解释为什么周期不中断吗? 代码运行后,循环不应该中断吗?

如果一个对象包含一个块,而该块包含该对象,则为一个循环。

如果其他人持有该块并且该块持有该对象,则只有对象直接或间接持有该块的所有人时,才会有一个循环。

块在运行时不会自毁,因此仅当释放了块时才会中断循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM