ブロックが 2 つある場合は、それらを呼び出します。さらに、ブロックはオブジェクトであり、sに入れることができますNSArray
。次に、配列を列挙してその内容を呼び出すことができます。
for( dispatch_block_t block in arrayOfBlocks ){
block();
}
また
[arrayOfBlocks enumerateObjectsUsingBlock:^(dispatch_block_t block, NSUInteger idx, BOOL *stop) {
block();
}];
sがある場合IMP
、それらは単なる関数ポインタです。それらは C 配列に入れるか、NSValue
s でラップして Cocoa 配列に入れることができます。それらを呼び出す前にキャストする必要があります。
メソッド署名の例:
- (dispatch_block_t)blockLinkingExistingBlock: (dispatch_block_t)firstBlock withBlock: (dispatch_block_t)secondBlock
{
dispatch_block_t linker = ^{ firstBlock(); secondBlock();};
// if compiling with ARC
return linker;
// otherwise
// return [[linker copy] autorelease];
}