C/Obj-Cでは、このようなtypedefはtypedef int MYINT;
です。ブロックの型定義はどのように動作するのですか
ブロックのためのtypedefを行う - typedef void (^MyBlock) (int a);
を今、私たちはMyBlock
を使用することができます。
typedef void (^MyBlock) (int a) MyBlock;
#define
に似ていますか?
構文はどのように機能しますか?
C/Obj-Cでは、このようなtypedefはtypedef int MYINT;
です。ブロックの型定義はどのように動作するのですか
ブロックのためのtypedefを行う - typedef void (^MyBlock) (int a);
を今、私たちはMyBlock
を使用することができます。
typedef void (^MyBlock) (int a) MyBlock;
#define
に似ていますか?
構文はどのように機能しますか?
は "ブロックプログラミングトピック" にDeclaring a Block Referenceを参照してください:
ブロック変数はブロックへの参照を保持します。 *の代わりに^を使用する点を除き、 の構文を使用して、関数へのポインタを宣言するのに似た構文、 を宣言します。
だから
typedef void (^myBlock) (int a);
typedef void (*myFunc) (int a);
と同じ構文を使用してブロックのタイプは、関数ポインタを宣言し定義します。
関数ポインタの詳細については、Understanding typedefs for function pointers in Cを参照してください。このようにする必要があり、ブロックの型を作成する「ブロックプログラミングトピック」からも
、:
typedef returnType (^blockName)(argument1, argument2, ...)
以下
非常に単純な実用的な例である:
typedef float (^MyBlockType)(float, float);
MyBlockType AddTwoFloat = ^(float a, float b) {return a + b;};
MyBlockType MultiplyTwoFloat = ^(float a, float b) {return a * b;};
float c = AddTwoFloat(1, 2); //c = 3
float d = MultiplyTwoFloat(1, 2); //d = 2
シンプルで明確なコードスニペット – Jasmeet