J'ai une question sur la syntaxe de l' __block
variables. Je sais que vous pouvez utiliser __block
sur une variable dans la portée de sorte qu'il n'est pas en lecture seule dans le bloc. Cependant, dans une place, dans les apple docs, j'ai vu une alternative:
"Les Variables dans la définition du champ d'action sont en lecture seule par défaut lorsque utilisé dans un bloc. Si vous avez besoin de changer la valeur de cette variable, vous pouvez utiliser une syntaxe particulière:
int count = 0;
float cumulativeValue = 0.0;
UpdateElements( a, N, ^(float element){
|count, cumulativeValue|
float value = factor * element;
++count;
cumulativeValue += value;
return value;
} );
Dans cet exemple, le comte et la cumulativeValue sont modifiés à l'intérieur du bloc, de sorte qu'ils sont inclus dans la liste séparée par des virgules de variables partagées au début du bloc de portée.
Cette syntaxe semble beaucoup plus propre et je suppose que vous pouvez ensuite modifier les variables que vous n'avez pas à déclarer, mais sont toujours dans la portée. Cependant, je n'ai pas vu cela nulle part ailleurs et xCode compilateur n'aime pas mon bloc de base. Est-il légitime de syntaxe?