gpt4 book ai didi

iphone - ivar 在两个街区内

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:47:05 27 4
gpt4 key购买 nike

我在接口(interface)上声明了这样一个ivar:

BOOL controllerOK;

我必须在自身位于 block 中的 block 中使用此 ivar。有点像

myBlockl = ^(){
[self presentViewController:controller
animated:YES
completion:^(){
if (controllerOK)
[self doStuff];
}];
};

如果我尝试这样做,我会看到一条警告:

capturing self strongly in this block is likely to lead to a retain cycle

对于 if (controllerOK) 行。

这似乎不是您在 block 开始之前使用 __unsafe_unretained 创建另一个变量的那些 block 问题之一。首先是因为该指令不能与 BOOL 一起使用,其次是因为必须在 block 内的运行时测试 ivar controllerOK。另一个问题是 block 本身是在接口(interface)上声明的,因此它将在创建它的上下文之外使用。

我该如何解决?

最佳答案

这应该有效:

__weak id this = self;
myBlockl = ^(){
[self presentViewController:controller
animated:YES
completion:^(){
if (this->controllerOK)
[this doStuff];
}];
};

关于iphone - ivar 在两个街区内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13558709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com