为什么我不能使用这个?

__block NSString *tableStrings[4][2];

[userValues enumerateObjectsUsingBlock:^(NSNumber *userScore, NSUInteger idx, BOOL *stop) {
        tableStrings[idx][0] = @"< 5";
        tableStrings[idx][1] = @"> 95";
}];

编译器对我大喊"Cannot refer to declaration with an array type inside block" 我给人的印象是,在变量前用__block表示可以做到这一点。 我可以使用NSString[x][x]使它起作用,但是我很好奇为什么不允许这样做。

===============>>#1 票数:0

块无法从封闭范围访问自动或__block存储的数组变量。 那只是限制。 这是因为这两件事都需要能够复制变量。 并且数组类型不可分配。

他们可能会对数组有特殊的情况,即数组是逐元素复制的。 C ++ 11 lambdas具有这种特殊情况,因此即使数组不可分配,它们也可以按值捕获数组。 但是,人们并没有为这个特殊情况而烦恼。

  ask by random translate from so

未解决问题?本站智能推荐: