これは毛むくじゃらになる可能性があるため、typedef を使用すると、次のようになります。
typedef void (^basicBlock)(void);
typedef void (^blockAcceptingBlock)(basicBlock);
それで
basicBlock block = ^ {
NSLog(@"Called from block passed as param");
};
blockAcceptingBlock parentBlock = ^(basicBlock childBlock) {
childBlock();
};
parentBlock(block);
typedef がないと、すべての丸括弧を使用した定義で少しうるさくなります (これらは単純なブロックであるため、示されている定義はまだかなり読みやすいことに注意してください)。
void (^block)(void) = ^ {
NSLog(@"Called from block passed as param");
};
void (^parentBlock)(void (^childBlock)(void)) = ^(void (^childBlock)(void)) {
childBlock();
};
parentBlock(block);
両方の出力
#=> 2012-04-27 11:39:12.798 Untitled[19725:707] Called from block passed as param