我有一個問題,這可能是相當普遍的。在ARC環境中,需要引用自我的塊將超出自我。我知道在塊中使用__weak typeof(self) weakSelf = self;
以避免保留週期。問題是我們確實需要保持自我。所以我的問題是:什麼時候在塊中引用self會創建一個保留週期? This post帖子顯示,在動畫塊中,引用自我是可以的。什麼時候在塊中引用自我保留週期?
我還審議了類似下面的解決辦法,但我不知道它改變任何東西:
__block typeof(self) blockSelf = self;
[someObj someMethodTakingCallback:^{
//do some stuff
blockSelf = nil;
}];
我想接下來的問題是「什麼時候自我保留塊?」我假設在上面的例子中 - 將一個塊傳遞給另一個對象來執行 - 事實並非如此。正確? –
沒有看到更多的餘地,你發佈的代碼應該不會導致'self'保留塊。 – rmaddy