Objective-C块是否与JavaScript中的匿名函数类似?

Flo*_*ell 6 objective-c objective-c-blocks

我试图理解块的概念.到目前为止我所读到的内容似乎在概念上类似于JavaScript中的匿名函数.它是否正确?

Con*_*has 4

是的,对于大部分来说。块是一种被处理的 C函数,可以从周围的作用域捕获变量。匿名函数相当于块,但由于块的幕后机制相当复杂,因此肯定不完全相同。

\n\n

例如,如果您计划在定义块不再处于活动状态的函数/方法之后/之外使用块\xe2\x80\x94,则如果您将该块设置为某处的属性或在 GCD 中使用(多-核心操作队列库),需要用Block_copy()(或[aBlock copy])复制。我不会详细介绍,但这肯定不是您使用 JS(匿名)函数所做的事情。这与块文字有关,如果您希望它持久存在,则需要将其复制到堆中。

\n\n

它可能会变得相当复杂(但其设计相当漂亮),但对于大多数用例来说,它相当简单,您可以将其视为匿名 JS 函数。;-)

\n