49

C/Obj-C では、このようなtypedef int MYINT;明確な typedef を行います。

ブロックの typedef を実行中 -typedef void (^MyBlock) (int a);

これで、 を使用できますMyBlock

typedef void (^MyBlock) (int a) MyBlock;のようにすべきではありません#defineか?

構文はどのように機能しますか?

4

2 に答える 2

66

「ブロック プログラミング トピック」の「ブロック参照の宣言」を参照してください。

ブロック変数は、ブロックへの参照を保持します。* の代わりに ^ を使用することを除いて、関数へのポインターを宣言するために使用するのと同様の構文を使用してそれらを宣言します。

そう

 typedef void (^myBlock) (int a);

と同じ構文を使用してブロックの型を定義します

 typedef void (*myFunc) (int a);

関数ポインタを宣言します。

関数ポインターの詳細については、「C における関数ポインターの typedef について」などを参照してください。

于 2013-03-09T13:12:11.597 に答える