ブロックプログラミング概論 翻訳元
このページの最終更新:2010-02-28
ADCの最終更新:2009-10-19
ADCの最終更新:2009-10-19
目次
イントロダクション(Introduction)
ブロックオブジェクトはランタイム特有のCレベルの構文です。これらは通常のC関数に似ていますが、実行可能なコードに加えて自動(スタック)メモリまたは手動(ヒープ)メモリに束縛された変数も収容しています。ブロックを使えば、関数表現をAPIに渡したり、自由にストアしたり、マルチスレッド上で使ったりすることができます。
ブロックはMac OS X v10.6のデベロッパーツールとして同梱されているGCCとClangで使うことができます。ブロックランタイムはオープンソースであり、LLVM’s compiler-rt subproject repositoryで見ることができます。またブロックはN1370: Apple’s Extensions to C(ここにはガーベジコレクションも含まれています)というスタンダードCワーキンググループでも提供されています。Objective-CもC++もC由来の言語なので、ブロックは3つの全ての言語(Objective-C++も同様)で動作するように設計されています。(構文にはこの目標が表れています。)
ブロックとは何か、C、C++、Objective-Cでどのように使うのかを学び、プログラムをより効率的、保守的にする為にこのドキュメントを読んでください。
ブロックはMac OS X v10.6のデベロッパーツールとして同梱されているGCCとClangで使うことができます。ブロックランタイムはオープンソースであり、LLVM’s compiler-rt subproject repositoryで見ることができます。またブロックはN1370: Apple’s Extensions to C(ここにはガーベジコレクションも含まれています)というスタンダードCワーキンググループでも提供されています。Objective-CもC++もC由来の言語なので、ブロックは3つの全ての言語(Objective-C++も同様)で動作するように設計されています。(構文にはこの目標が表れています。)
ブロックとは何か、C、C++、Objective-Cでどのように使うのかを学び、プログラムをより効率的、保守的にする為にこのドキュメントを読んでください。
このドキュメントの構成(Organization of This Document)
このドキュメントは以下のチャプターから構成されています。
- 「ブロックを始めよう」?では簡潔で実践的なブロックの導入を提供しています。
- 「大まかなコンセプト」?ではブロックの概念の導入を提供しています。
- 「ブロックの宣言と生成」?ではブロック変数の宣言の仕方とブロックの実装の仕方を説明しています。
- 「ブロックと変数」?ではブロックと変数間の関係を説明し、__blockストレージをタイプ修飾子と定義します。
- 「ブロックを使う」?では様々なブロックの用法を例示します。