インターフェイスで宣言された次のような ivar があります。
BOOL controllerOK;
ブロック内に存在するブロック内でこの ivar を使用する必要があります。何かのようなもの
myBlockl = ^(){
[self presentViewController:controller
animated:YES
completion:^(){
if (controllerOK)
[self doStuff];
}];
};
そうしようとすると、次の警告が表示されます。
このブロックで自己を強くキャプチャすると、保持サイクルが発生する可能性があります
if (controllerOK) 行の場合。
これは、ブロックの開始前に __unsafe_unretained を使用して別の変数を作成するブロックの問題の 1 つではないようです。1 つ目は、この命令を BOOL で使用できないため、2 つ目は、ivar controllerOK をブロック内の実行時にテストする必要があるためです。もう 1 つの問題は、ブロック自体がインターフェイスで宣言されているため、ブロックが作成されているコンテキストの外で使用されることです。
どうすれば解決できますか?