我经常发现自己创建了一个“包装器”块,它只用于执行许多其他块,通常具有相同的类型签名。
假设我有 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];