两种方法可以实现,一种是参考zenny_chen所说的全局的或都static的block可以实现
http://www.cocoachina.com/bbs/read.php?tid-9222-fpage-3.html
int main(void)
{
void (^p)(int) = 0;
static void (^ const blocks)(int) = ^(int i){
if(i > 0){
puts("Hello, world!");
blocks(i - 1);
}
};
p = blocks;
p(2);
}
另外找到一种方法就是直接将block块也用__block来进行声明就可以了。
int main(void)
{
__block void (^blocks)(int);
blocks = ^(int i){
if(i > 0){
puts("Hello, world!");
blocks(i - 1);
}
};
blocks(2);
}
ps,最近使用block和配合G_C_D来写程序,实在是爽疯了。^_^
http://minik.blog.com/2011/08/12/objective-c-blockrecursive/
[backcolor=infobackground]