2016-05-02 59 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中的代碼。