我读过很多关于 block 创建保留周期的文章。但为什么它会产生一个保留周期呢?该 block 运行后不会释放引用吗?
[UIView animateWithDuration:5
animations:^{
self.variable = somevalue;
}];
例如,如果执行上面的代码,那么对 self 的引用就会被释放,对吧?
我已经看到上面的 block 创建了两个强引用。一种是从物体到 block ,再从 block 到物体。 有人可以向我解释为什么循环不会中断吗?代码运行后循环不应该中断吗?
最佳答案
如果一个对象包含一个 block ,并且该 block 包含该对象,那么这就是一个循环。
如果其他人持有该 block ,而该 block 持有该对象,则只有当对象直接或间接持有持有该 block 的人时,才会出现循环。
block 在运行时不会自毁,因此只有在 block 被释放时循环才会被破坏。
关于ios - 为什么 block 在引用 self 时会创建保留循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24617163/