2016-07-22 11 views
0

ブロックが外部の変数を変更したい場合、この変数はブロック自体でヒープにコピーする必要があるため、キーワード__blockを使用して記述する必要があります。iOSブロックで__blockを使用せずに変数を変更する方法

しかし、__blockを使用したくない場合でも、変数を変更する方法はありますか?

autoの代わりにglobalまたはstaticに変数を設定して、静的メモリ領域に格納することができると考えました。

または、ポインタに設定して、ヒープに割り当てられたコンテンツをポイントできますか?私はうまくいかなかったこのケースを試しました、なぜ私は知りたいのですが。

+1

「必須」と「必須」とはどういう意味ですか?何を正確に避けようとしていますか?それは必要ではありませんが、パフォーマンスに役立つかもしれません。 –

+0

@ JulianF.Weinert、私の理解は、将来の使用のために、自動的にその変数を持つブロックをヒープにコピーすることです、そうでなければブロックとその変数はスタックで解放されます。 – Boris

+1

はい、ブロック内のグローバル変数やstatic変数を変更することができます。 – newacct

答えて

0

変数を失うことを避けるために、ブロックは、変数にアクセスして変更する場合は、ローカル変数をヒープにコピーします。しかし、グローバルリージョンに格納される変数をグローバルまたはスタティックにすると、スタック上で変数を失うことを心配する必要はありませんが、ブロックはそれをコピーせずに直接変更することができます。

私は間違いがあれば修正してください。それ以上の改善がない場合は、私は自分自身で答えをマークします。

関連する問題