假设我已经使用创建了一个弱的自我

__weak typeof(self) weakSelf = self;
[self doABlockOperation:^{
        ...
}];

在该块内,如果我嵌套另一个块:
[weakSelf doAnotherBlockOperation:^{
    [weakSelf doSomething];
}

是否会形成保留周期?我是否需要创建另一个对weakSelf的弱引用?
__weak typeof(self) weakerSelf = weakSelf;
[weakSelf doAnotherBlockOperation:^{
    [weakerSelf doSomething];
}

最佳答案

这取决于。

仅当您实际存储该块时才创建一个保留周期(因为self指向该块,而块指向self)。如果您不打算存储任何一个块,则使用对self的强引用就足够了---块将在执行后首先被释放,然后将其指向self的指针释放。

在您的特定示例中,除非您执行未显示的更多操作,否则您无需创建任何较弱的WeakerEvenWeakerSelfs。

关于ios - 指嵌套块中的弱自我,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17104634/

10-10 22:14