我在接口上声明了这样的 ivar:
BOOL controllerOK;
我必须在一个块内使用这个 ivar,该块本身位于一个块中。就像是
myBlockl = ^(){
[self presentViewController:controller
animated:YES
completion:^(){
if (controllerOK)
[self doStuff];
}];
};
如果我尝试这样做,我会看到一个警告:
在此块中强烈捕获自我可能会导致保留循环
对于 if (controllerOK) 行。
这似乎不是您在块开始之前使用 __unsafe_unretained 创建另一个变量的那些块问题之一。首先是因为该指令不能与 BOOL 一起使用,其次是因为 ivar controllerOK 必须在块内的运行时测试。另一个问题是块本身是在接口上声明的,因此它将在创建它的上下文之外使用。
我该如何解决?