1. ホーム
  2. objective-c

[解決済み] Objective-C パラメータとしてブロックを渡す

2022-05-06 17:17:57

質問

を渡すにはどうすればよいですか? BlockFunction / Method ?

試してみた - (void)someFunc:(__Block)someBlock を使用することができますが、無駄です。

ie. は何ですか? タイプ に対して Block ?

解決方法は?

ブロックの型は、その引数と戻り値の型によって異なります。一般に、ブロックの型は関数ポインタの型と同じように宣言されますが、その代わりに * を付けて ^ . ブロックをメソッドに渡す方法として、以下のようなものがあります。

- (void)iterateWidgets:(void (^)(id, int))iteratorBlock;

しかし、見ての通り、それは面倒だ。代わりに typedef を使えば、ブロックの種類をすっきりさせることができます。

typedef void (^ IteratorBlock)(id, int);

そして、そのブロックをこのようにメソッドに渡します。

- (void)iterateWidgets:(IteratorBlock)iteratorBlock;