我对__block
变量的语法有疑问。我知道您可以__block
在范围内的变量上使用,因此它在块内不是只读的。然而,在苹果文档的一个地方,我看到了另一种选择:
“定义范围内的变量在块中使用时默认为只读。如果需要更改此类变量的值,可以使用特殊语法:
int count = 0;
float cumulativeValue = 0.0;
UpdateElements( a, N, ^(float element){
|count, cumulativeValue|
float value = factor * element;
++count;
cumulativeValue += value;
return value;
} );
在这个例子中,count和cumulativeValue在块内被修改,所以它们被包含在块作用域开头的逗号分隔的共享变量列表中。
这种语法看起来更简洁,我假设您可以修改未声明但仍在范围内的变量。但是,我在其他任何地方都没有看到过这种情况,并且 xCode 编译器不喜欢我的基本块。这是合法的语法吗?