2012-04-26 32 views
2

我知道有幾種方法可以做到這一點。但我想檢查一下,我做到這一點不會導致泄漏。使用自己的__block

我有一個塊在我的項目(使用ARC),並防止保留週期我已經做了以下

id __block blockSelf = self; 

,然後裏面的塊替換自我與blockSelf。這是一個良好的編碼習慣

乾杯

+0

很好找。我要說的唯一的事情就是它不使用ARC。 – geminiCoder 2012-04-26 10:36:59

回答

3

您的代碼將仍然保留塊內的自我的目標 - 我做了以下內容:

__weak SomeObject *weakSelf = self; 

this answer了。

希望這會有所幫助!

+0

乾杯我認爲你的方式是一個更好的方式。我使用上面的代碼運行了剖析器,沒有發現任何泄漏。我不完全確定__block在這種情況下會做什麼 – geminiCoder 2012-04-26 10:35:18

+2

以及此處鏈接爲Docu書籤列表:http://thirdcog.eu/pwcblocks/#arcblocks – CarlJ 2012-04-26 10:39:09

+0

基於此鏈接它似乎很弱是如果使用ARC – geminiCoder 2012-04-26 10:42:21

0

對於MRC,

__block id blockSelf = self; 

不會保留 '自我'。

但是,對於ARC,它不起作用。您必須使用:

__weak id weakSelf = self;