libdispatch在bsd上有两种API,用llvm/clang扩展的block系列和不用的函数指针系列。
block可以理解为adhoc的函数指针块。因为有了扩展,其引用的变量都被保护起来直到调用后方才释放。
void func1(float arg) {
float r = arg * arg;
printf("%.2f\n", r);
}
void (*fpPtr) (float arg) = func1;
/**上面是函数指针,下面是block。block里的变量默认是栈上分配的。**/
void (^block) (float arg) = ^(float arg) {
float r = arg * arg;
printf("%.2f\n", r);
};
【 在 Roka (好大的棉花糖咔咔-栋力无限) 的大作中提到: 】
: 不好意思 不熟悉Grand Central Dispatch
: 有新的看法可以一起讨论
--
FROM 123.113.127.*