我想声明一个块类型,它需要一个参数,该参数是相同的块类型。就像这样:
我知道这个声明是无效的。但我想知道是否有可能实现递归块,该块只需要一个参数,即相同的块类型。
我正在寻找一种使用block在Objective-C中实现面向切面编程(AOP)的方法。以下是关于如何实现该功能的问题。
进一步问题1:
如何实现一个可变参数函数(variadic function),它接受上述多个Block,并以
typedef void (^BlockInBlock) (BlockInBlock block);
我知道这个声明是无效的。但我想知道是否有可能实现递归块,该块只需要一个参数,即相同的块类型。
我正在寻找一种使用block在Objective-C中实现面向切面编程(AOP)的方法。以下是关于如何实现该功能的问题。
进一步问题1:
如何实现一个可变参数函数(variadic function),它接受上述多个Block,并以
nil
结束,我可以使用多个块调用该函数,直到遇到 nil?就像这样:@interface NSObject(AOP)
- (void) invokeBlockInBlock:(BlockInBlock) headBlock, ...{
va_list blockList;
va_start(blockList, headBlock);
// Invoke recursive blocks here until the value of va_arg(blockList, BlockInBlock) is nil
// it would be like: block1(self, block2(self, block3(self, block4(...))));
va_end(blockList);
}
@end
进一步问题2:
如果递归块有返回值怎么办?
关于C语言的额外问题:
是否可以声明一个C函数,它接受一个参数,该参数是一个C函数指针,并且该C函数指针的函数还接受另一个C函数指针?