[解決済み] ブロック(__block)」というキーワードはどういう意味ですか?
2022-03-20 07:04:38
質問
具体的にどのような
__block
のキーワードはどういう意味ですか?ブロック内の変数を変更できるのは知っているのですが、知りたいのです...。
- 具体的にコンパイラに何を伝えるのですか?
- 他に何かすることはありますか?
- それだけなら、そもそもなぜ必要なのでしょうか?
- どこかにドキュメントがあるのでしょうか?(見つからない)。
解決方法は?
これは、このマークが付いた変数がブロック内で使用される場合、特別な方法で扱われなければならないことをコンパイラに伝えるものです。通常、ブロック内で使用される変数とその内容はコピーされるため、これらの変数に加えられた変更はブロックの外には現れません。これらの変数が
__block
ブロックの中で行われた変更は、ブロックの外でも見ることができます。
例と詳細については、以下を参照してください。 ブロックストレージ型 をアップルの ブロック・プログラミング・トピックス .
重要なのは、この例です。
extern NSInteger CounterGlobal;
static NSInteger CounterStatic;
{
NSInteger localCounter = 42;
__block char localCharacter;
void (^aBlock)(void) = ^(void) {
++CounterGlobal;
++CounterStatic;
CounterGlobal = localCounter; // localCounter fixed at block creation
localCharacter = 'a'; // sets localCharacter in enclosing scope
};
++localCounter; // unseen by the block
localCharacter = 'b';
aBlock(); // execute the block
// localCharacter now 'a'
}
この例では、両方の
localCounter
と
localCharacter
はブロックが呼び出される前に変更されます。しかし,ブロックの内部では
localCharacter
のおかげで見えるようになります。
__block
というキーワードがあります。逆に、ブロックは
localCharacter
であり、この変更はブロックの外側で見ることができる。
関連
-
[解決済み] MPProgressHUDとNSSessionを使用したデータシンクの読み込み
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] Objective-Cのtypedef enumとは何ですか?
-
[解決済み] NSの接頭辞はどういう意味ですか?
-
[解決済み】SwiftのコードをObjective-Cにインポートするにはどうすればいいですか?
-
[解決済み】isEqual:とハッシュをオーバーライドするためのベストプラクティス
-
[解決済み】idの代わりにinstancetypeを使い始めるのは有益でしょうか?
-
[解決済み】このブロックで自己を強く捉えると、リテインサイクルになりそうです。
-
[解決済み] ブロックを使って `self` のサイクルを保持する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Objective-CのNSLog関数でNSString型を出力する方法とは?
-
[解決済み] 警告 : フォーマット文字列は文字列リテラルではありません (安全でない可能性があります)
-
[解決済み] Objective-CでNSNumberをintに変換する。
-
[解決済み] クラスメソッドとインスタンスメソッドの違いは何ですか?
-
[解決済み】浮動小数点値の比較はどのくらい危険か?
-
[解決済み】Objective-Cのシングルトンはどのように見えるべきですか?[クローズド]
-
[解決済み】iOS7でステータスバーを隠すことができない。
-
[解決済み】このブロックで自己を強く捉えると、リテインサイクルになりそうです。
-
[解決済み] [Solved] UITableViewがReloadDataを完了したことを伝えるには?
-
[解決済み】APIを実装する際に、ブロック内でselfをキャプチャしないようにするにはどうすればいいですか?