小编pk-*_*-nb的帖子

__block的替代语法?

我对__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;
} );
Run Code Online (Sandbox Code Playgroud)

在此示例中,count和cumulativeValue在块内部被修改,因此它们包含在块作用域开头的逗号分隔的共享变量列表中.

这种语法似乎更清晰,我假设你可以修改你没有声明但仍在范围内的变量.但是,我还没有在其他任何地方看到这个,xCode编译器不喜欢我的基本块.这是合法的语法吗?

objective-c objective-c-blocks

33
推荐指数
2
解决办法
1374
查看次数

标签 统计

objective-c ×1

objective-c-blocks ×1