为什么在引用self时块会创建保留周期?

时间:2014-07-07 18:20:02

标签: ios objective-c objective-c-blocks

我读过许多文章,讨论创建保留周期的块。但是为什么要进行保留周期呢?该块在运行后是否会释放该引用?

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

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

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

1 个答案:

答案 0 :(得分:4)

如果一个对象持有一个块并且该块保存该对象,那么这就是一个循环。

如果其他人持有该块并且该块保存该对象,那么只有当该对象直接或间接地拥有持有该块的任何人时才会有一个循环。

块在运行时不会自毁,因此只有在块被解除分配时才会中断循环。