「Declaring and Creating Blocks」の編集履歴(バックアップ)一覧はこちら
「Declaring and Creating Blocks」(2010/03/04 (木) 23:47:16) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
//0.下はいじらない
Tags:&tags()
//1.以下に続けてADCでの分類を書き込みリンクする。「ガイド小見出し(日本語名)」、まで書く
&link_toppage(トップ) > [[ガイド>Guides]] > ブロックプログラミング概論
//前後のページへのリンクをはる。ページ最下部にも同じものがあるので忘れずにリンクする
[[前のページ>]] [[次のページ>]]
*ブロックの宣言と作成 [[翻訳元>http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Blocks/Articles/bxDeclaringCreating.html#//apple_ref/doc/uid/TP40007502-CH4-SW1]]
以下のセクションでは実践的な例を使ってブロックを始める手助けをします。
//3.翻訳元の最終更新日を書く
このページの最終更新:&date()
ADCの最終更新:2009-10-19
//目次は自動生成
目次
#contents(fromhere=true)
//4.以下、用語は頻繁に出てくる単語の翻訳ガイドラインを参照しながら翻訳する。
//5.ある程度書き終わったらタグ(未完または完成、カテゴリ名×3)をつけて下線を引く(広告との境)。これで終了。それではGood Luck!
//中見出しは下線を引く
**ブロック参照の宣言
----
ブロック変数はブロックへの参照を持ちます。ブロック変数は関数ポインタを宣言するのとよく似た構文を使います。違っているのは*の代わりに^を使うことだけです。ブロック型は他のCの型系を完全に組み込んで動作します。以下は全て有効なブロック変数の宣言です。
|BGCOLOR(#eff):void (^blockReturningVoidWithVoidArgument)(void);&br()int (^blockReturningIntWithIntAndCharArguments)(int, char);&br()void (^arrayOfTenBlocksReturningVoidWithIntArgument[10])(int);|
ブロックは可変長引数(...)をサポートしています。引数をとらないブロックは引数リストにvoidを指定しなければなりません。
ブロックはコンパイラにブロックの機能を有効にする為の全てのメタデータの集合や渡される引数、戻り値の指定を渡すことで完全に安全な型になるように設計されています。ブロックの参照は任意のポインタ型にキャストできますし、その逆も同様です。ただし、間接参照演算子(*)経由でブロックの参照を得ることはできません。なぜなら、コンパイル時にブロックのサイズが計算できなくなってしまうからです。
また、ブロックの型を作成することができます。一般的にはそうすることが複数の箇所でシグニチャとしてブロックを使用する時に実用的だと考えられています。
|BGCOLOR(#eff):typedef float (^MyBlockType)(float, float);&br() &br()MyBlockType myFirstBlock = // ... ;&br()MyBlockType mySecondBlock = // ... ;|
**ブロックの生成(Creating a Block)
----
ブロックのリテラル表現の始まりを明示するには^演算子を、終わりを明示するには;演算子を使用します。以下の例では簡単なブロックを宣言し、あらかじめ宣言しておいた変数(oneFrom)で参照しています。
|BGCOLOR(#eff):int (^oneFrom)(int);&br() &br()oneFrom = ^(int anInt) {&br()&space(4)return anInt - 1;&br()};|
ブロック表現の戻り値を明確に宣言しなければ、ブロックの内容から自動的に推定されます。戻り値の型が推定される場合で引数リストがvoidであれば、戻り値と同様(void)引数を省略することができます。複数return文がある場合、その方は正確に言ってしていなければなりません(必要ならキャストを使います)。
**大域ブロック(Global Blocks)
----
ファイルレベルでブロックを大域的なリテラルとして使用できます。
|BGCOLOR(#eff):#import <stdio.h>&br() &br()int GlobalInt = 0;&br()int (^getGlobalInt)(void) = ^{ return GlobalInt; };|
#right(){[[前のページ>Getting Started with Blocks]] [[次のページ>]]}
----
//0.下はいじらない
Tags:&tags()
//1.以下に続けてADCでの分類を書き込みリンクする。「ガイド小見出し(日本語名)」、まで書く
&link_toppage(トップ) > [[ガイド>Guides]] > ブロックプログラミング概論
//前後のページへのリンクをはる。ページ最下部にも同じものがあるので忘れずにリンクする
[[前のページ>]] [[次のページ>]]
*ブロックの宣言と作成 [[翻訳元>http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Blocks/Articles/bxDeclaringCreating.html#//apple_ref/doc/uid/TP40007502-CH4-SW1]]
以下のセクションでは実践的な例を使ってブロックを始める手助けをします。
//3.翻訳元の最終更新日を書く
このページの最終更新:&date()
ADCの最終更新:2009-10-19
//目次は自動生成
目次
#contents(fromhere=true)
//4.以下、用語は頻繁に出てくる単語の翻訳ガイドラインを参照しながら翻訳する。
//5.ある程度書き終わったらタグ(未完または完成、カテゴリ名×3)をつけて下線を引く(広告との境)。これで終了。それではGood Luck!
//中見出しは下線を引く
**ブロック参照の宣言
----
ブロック変数はブロックへの参照を持ちます。ブロック変数は関数ポインタを宣言するのとよく似た構文を使います。違っているのは*の代わりに^を使うことだけです。ブロック型は他のCの型系を完全に組み込んで動作します。以下は全て有効なブロック変数の宣言です。
|BGCOLOR(#eff):void (^blockReturningVoidWithVoidArgument)(void);&br()int (^blockReturningIntWithIntAndCharArguments)(int, char);&br()void (^arrayOfTenBlocksReturningVoidWithIntArgument[10])(int);|
ブロックは可変長引数(...)をサポートしています。引数をとらないブロックは引数リストにvoidを指定しなければなりません。
ブロックはコンパイラにブロックの機能を有効にする為の全てのメタデータの集合や渡される引数、戻り値の指定を渡すことで完全に安全な型になるように設計されています。ブロックの参照は任意のポインタ型にキャストできますし、その逆も同様です。ただし、間接参照演算子(*)経由でブロックの参照を得ることはできません。なぜなら、コンパイル時にブロックのサイズが計算できなくなってしまうからです。
また、ブロックの型を作成することができます。一般的にはそうすることが複数の箇所でシグニチャとしてブロックを使用する時に実用的だと考えられています。
|BGCOLOR(#eff):typedef float (^MyBlockType)(float, float);&br() &br()MyBlockType myFirstBlock = // ... ;&br()MyBlockType mySecondBlock = // ... ;|
**ブロックの生成(Creating a Block)
----
ブロックのリテラル表現の始まりを明示するには^演算子を、終わりを明示するには;演算子を使用します。以下の例では簡単なブロックを宣言し、あらかじめ宣言しておいた変数(oneFrom)で参照しています。
|BGCOLOR(#eff):int (^oneFrom)(int);&br() &br()oneFrom = ^(int anInt) {&br()&space(4)return anInt - 1;&br()};|
ブロック表現の戻り値を明確に宣言しなければ、ブロックの内容から自動的に推定されます。戻り値の型が推定される場合で引数リストがvoidであれば、戻り値と同様(void)引数を省略することができます。複数return文がある場合、その型は正確に一致していなければなりません(必要ならキャストを使います)。
**大域ブロック(Global Blocks)
----
ファイルレベルでブロックを大域的なリテラルとして使用できます。
|BGCOLOR(#eff):#import <stdio.h>&br() &br()int GlobalInt = 0;&br()int (^getGlobalInt)(void) = ^{ return GlobalInt; };|
#right(){[[前のページ>Getting Started with Blocks]] [[次のページ>]]}
----
表示オプション
横に並べて表示:
変化行の前後のみ表示: