私は__block
変数の構文について質問があります。スコープ内の変数に__block
を使うことができるので、ブロック内では読み取り専用ではありません。しかしapple docs内の1つの場所で、私は選択肢を見ました:__blockの代替構文?
は「定義スコープ内の変数は読み取り専用されているデフォルトでブロック内で使用するときに、このような変数の値を変更する必要がある場合は、。特別な構文を使用することができます。この例では
int count = 0;
float cumulativeValue = 0.0;
UpdateElements(a, N, ^(float element){
|count, cumulativeValue|
float value = factor * element;
++count;
cumulativeValue += value;
return value;
});
をカウントし、cumulativeValueは、ブロック内で変更されているので、彼らはブロックスコープの先頭で共有変数のコンマ区切りのリストに含まれています。
この構文ははるかにきれいに見えますが、宣言していないが範囲内にある変数を変更できると思います。しかし、私は他の場所でこれを見たことがないし、xCodeコンパイラは私の基本ブロックを好まない。これは正当な構文ですか?
非常に興味深い!歴史のおかげです。 –
なぜ、構文が正式化される前に文書が書かれたのか? – CodaFi
ドキュメンテーションの人々がコヒーレントに何かを説明する方法を理解できない場合、それは設計に深刻な欠陥があることを示しているので、設計プロセスの早い段階で関与しています。そのドキュメンテーションは、ブロックが最初に発表されたWWDCのために元々作成されているかもしれません。 – bbum