多くの場合、他の多くのブロックを実行するためだけに機能する「ラッパー」ブロックを作成していることに気付くことがよくあります。通常は同じ型シグネチャを使用します。
同じ型シグネチャを持つ 2 つのブロックがあるとします。
MyBlockT block1 = ^(NSString *string, id object) {
//1 does some work
};
MyBlockT block2 = ^(NSString *string, id object) {
//2 does some other work
};
Combine()
2ブロックかかる魔法の関数を実装する方法はありますか:
MyBlockT combinedBlock = Combine(block1, block2); //hypothetical function
そして、次のことと同等です:
MyBlockT combinedBlock = ^(NSString *string, id object) {
block1(string, object);
block2(string, object);
};
これは を返すブロックでのみ意味があることは知っていますvoid
が、私が興味を持っているのはそれだけです。
このCombine
関数は 2 つのブロックを取り込むだけで済みます。さらにブロックがある場合は、それらを連鎖させることができます。これを実装する方法、またはそれが可能であるかどうかについて、私は機知に富んでいます。
PSソリューションにCマクロが含まれていてもかまいません
編集
結果のブロックをメソッドの引数として使用できるようにしたいと思います。
[UIView animateWithDuration:1 animations:someCombinedBlock];