2012-04-26 12 views
2

これを行う方法はいくつかあります。しかし、私が行ったやり方がリークを引き起こしていないことを確認したい。自分で__blockを使用する

私は(ARCを使用して)私のプロジェクト内のブロックを持っていると私は、次の

id __block blockSelf = self; 

を行って、その後、ブロック内blockSelfで自己を交換した保持サイクルを防ぐために。

乾杯

+0

ニース見つける。私が言う唯一のことは、ARCを使用しないことです。 – geminiCoder

答えて

3

あなたのコードはまだブロック内部の自己のオブジェクトを保持しますこれは良いコーディング習慣です - 私は、次の手順を実行します

__weak SomeObject *weakSelf = self; 

this answerを参照してください。

希望すると便利です。 MRCの場合

+0

乾杯私はあなた方がそれをやるより良い方法だと思います。私は上記のコードを使用してプロファイラを実行し、漏れはありませんでした。このインスタンスでは__blockが何をするのかは完全にはわかりません – geminiCoder

+2

Docuブックマークリストのリンクは次のとおりです。http://thirdcog.eu/pwcblocks/#arcblocks – CarlJ

+0

ARCを使用すると弱い – geminiCoder

0

__block id blockSelf = self; 

は、 '自己' を保持しません。

ただし、ARCでは機能しません。あなたは使用する必要があります:

__weak id weakSelf = self; 
関連する問題