两种方法可以实现,一种是参考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]
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]
本文介绍了在Objective-C中如何使用Block实现递归功能。通过两种方式,包括使用静态Block和使用__block关键字声明Block,实现了递归调用的功能,并在文中提到了Block与GCD结合使用的便利性。
307

被折叠的 条评论
为什么被折叠?



