gpt4 book ai didi

objective-c - 为什么接口(interface)中允许使用 “__block” 关键字?

转载 作者:太空狗 更新时间:2023-10-30 03:45:57 27 4
gpt4 key购买 nike

如果我尝试访问具有 __block 存储类型的“对象变量”:

@interface {
__block float x;
}

在一个 block 中:

@implementation ... {
...
-(void) func: {
^(...) {
x = 0;
}
}

我收到一个“保留周期”警告,除非我创建一个 __block 对 self 的引用并像这样使用它:

-(void) func: {
__block id s = self;
^(...) {
s->x = 0;
}
}

为什么可以在接口(interface)中声明变量“__block”?

最佳答案

__block 变量存在于变量的词法范围和在变量的词法范围内声明或创建的所有 block 和 block 副本之间共享的存储中。 see

关于objective-c - 为什么接口(interface)中允许使用 “__block” 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12916419/

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