2016-05-02 13 views
-1

在这种情况下调用,weakself需要避免保留周期自身内部块中,通过超

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

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

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

回答

1

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

如果您实际存储了块(因为自己指向块并且块指向自己),您只会创建一个保留循环。

请参考以下链接了解更多信息:

Referring to weak self inside a nested block

+0

请告诉我自我指向我们看到的代码中的块的位置。 – gnasher729

3

不会创建一个循环?只有showMethodA将该块存储到自身中。

“超级”与“自我”只影响调度,调用超类showMethodA而不是自己自己的showMethodA。它不影响周期。并且是否创建循环取决于showMethodA中的代码。