假设我已经使用创建了一个弱的自我
__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/