3

可能重复:
什么是 (double (^)(int))foofoo

我尝试在 Google 和 SO 上搜索定义,我发现了使用它们但没有明确定义的示例。“块”是指插入符号 ( ^)。我在他们描述的 cdecl 网站上找到了它:

(double (^)(int, long long )) foo

作为

cast foo into block(int, long long) returning double

在今天之前,我从未见过使用过这个符号。任何人都可以清楚地描述块是什么并包含一个最小的工作示例吗?谢谢。

4

1 回答 1

8

是 Apple 对 C(不仅是 Objective-C)语言的非标准扩展。它们实现了闭包(lambda 函数等,不管你怎么称呼它们)——基本上它们是未命名的类函数实体,包含可以调用的代码。它们有助于编写例如事件驱动的代码,其中回调被详尽地使用。

于 2012-09-04T19:31:49.183 回答