私はこのようなブロック内でグローバルVARまたはプロパティを使用する必要がありますたびに、「このブロックで強くキャプチャ自己保持のサイクルにつながる可能性があります」このようなそれもBOOL変数文句メッセージ
BOOL *iis = isItSaving;
id myself = self;
self.save = ^(){
if (iis == NO) {
[myself saveMyFile];
}
};
やXcodeのは、保持サイクルにつながる可能性があり、このブロックで強く自己を捉える」文句を言うだろう...?
ブロックが不自由な解決策の前にすべてを再宣言します。
これは正しい方法ですか?エレガントな方法はありますか?
このものは醜いです。私はARCを使用しています。
男、これは地獄のように醜いです。すべてを再宣言しなければならない...ありがとう。 – SpaceDog
@MarkAmeryはい、clangはますます多くの問題を抱えています。そして、正しいことですが、囲みオブジェクトの寿命は、少なくともブロックが終了するまで延長する必要があります。編集中... –
@NikolaiRuhe * "囲みオブジェクトの寿命は、少なくともブロックが終了するまで延長する必要があります" * - nice、ブロック内の 'self'への強い参照を作成する理由は何も気づきませんでした'__unsafe_unretained'を使用するよりも好ましいでしょうが、そのフレーズだけで信じられないほど明確になります。もしあなたが望めば、答えの中の2つのアプローチを比較する価値があるかもしれません。 –