超级自称内部块

时间:2016-05-02 12:33:19

标签: objective-c self weak-references retain-cycle

在这种情况下,需要弱自己以避免保留周期

[self showMethodA:^{
    [weakself showMethodB];
}];

这种情况会导致保留周期吗?

[super showMethodA:^{
    [self showMethodB];
}];

2 个答案:

答案 0 :(得分:3)

它会创建一个循环吗?仅当showMethodA将块存储为self时。

"超" vs." self"只影响调度,调用超类showMethodA而不是self自己的showMethodA。它不会影响周期。是否创建循环取决于showMethodA中的代码。

答案 1 :(得分:1)

是的,它会创建保留周期。

如果您实际存储了块,则只创建一个保留周期(因为self指向块,而block指向self)。

请参阅以下链接以获取更多信息:

Referring to weak self inside a nested block